天天看点

mysql主从复制(详细篇)

MySQL主从复制的优点:

如果主服务器出现问题, 可以快速切换到从服务器提供的服务,保证高可用性

可以在从服务器上执行查询操作, 降低主服务器的访问压力

可以在从服务器上执行备份, 以避免备份期间影响主服务器的服务

1、准备两台主机,搭建好mysql数据库

主机A: 192.168.12.134

从机B: 192.168.12.135

mysql安装请访问:https://www.rmcxy.top/?p=100

2、先登录主机A、在服务器上,设置一个从数据库的账户,使用REPLICATION SLAVE

mysql>GRANT REPLICATION SLAVE ON *.* TO '账号'@'从机ip' IDENTIFIED BY '密码'

赋予从机权限,有多台从机,就执行多次

例如:mysql>GRANT REPLICATION SLAVE ON *.* TO 'dream'@'192.168.12.135' IDENTIFIED BY 'Admin0226@'

如果提示错误修改密码:
alter user user() identified by "Admin0226@";
           

#flush privileges刷新MySQL的系统权限相关表,

mysql>flush privileges;

mysql主从复制(详细篇)

表示成功

3、创建数据库 test

4、打开主机A的my.cnf,输入如下:(位置一般在: /etc/my.cnf)

server-id=1#主机标示,整数 一般为ip结尾:134
log_bin=mysql-bin.log   #确保此文件可写,开启bin-log
read-only=0  #主机,读写都可以
binlog-do-db=test   #需要备份数据,多个写多行 
binlog-ignore-db=mysql #不需要备份的数据库,多个写多行
           

从新启动mysql服务 :/bin/systemctl restart mysqld.service

5、得到主服务器当前二进制名和偏移量,这个操作是为了在从数据库启动后从这个点开始进行数据的恢复

mysql> show master status;

mysql主从复制(详细篇)

记住file 和 position 的值,在配置从机时用

把test要同步的数据库导入到从数据库 (主备份到从数据库)

6、修改从数据库的my.cnf文件,增加server-id参数

server-id       = 2#主机标示,整数 一般为ip结尾:134
log_bin         = mysql-bin.log
           
从新启动mysql服务器

输入命令

mysql> change master to

    -> master_host='192.168.12.134', 主服务器ip

    -> master_user='dream',  创建的用户

    -> master_password='Dream0226@',  用户密码

    -> master_log_file='mysql-bin.000001', 主服务器的log_file值

    -> master_log_pos=154; 主服务器的log_pos=值
           

启动slave进程

mysql>  start slave;

在从服务器进行show salve status验证

Mysql>SHOW SLAVE STATUS\G

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
           

查看这两个,都是yes表示成功

修改主数据库 同步到从数据库

常见错误:

Slave_IO_Running: No
Slave_SQL_Running: Yes

首先要查找到mysql的安装地址
Mysql>show variables like 'datadir';

然后通过mysql生成一个uuid进行记录等会用于修改
Mysql>Select uuid()

然后进入datadir目录

Cd /var/lib/mysql/
Vim auto.cnf

把里边的uuid替换掉

重新启动服务器
           

继续阅读