MySQL主从复制配置


1.准备工作

l 三台版本一致的mysql数据库
l 主 192.168.39.134
l 从1 192.168.39.137
l 从2 192.168.39.135

2.主服务器配置

2.1主库修改开启binlog日志

修改MySQL配置文件 vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin #开启二进制日志
server-id=100 #设置server-id
重启mysql生效

2.2为从库创建对应的用户

CREATE USER ‘slave1’@’192.168.39.137’ IDENTIFIED BY ‘密码’;#创建用户
CREATE USER ‘slave2’@’192.168.39.136’ IDENTIFIED BY ‘密码’;#创建用户
GRANT REPLICATION SLAVE ON . TO ‘slave1’@’192.168.39.137’;#分配权限
GRANT REPLICATION SLAVE ON . TO ‘slave2’@’192.168.39.136’;#分配权限
flush privileges; #刷新权限
注:在mysql8.0不能直接用上面的。要先创建再授权

2.3查看主库状态,日志文件名,日志位置

mysql主从复制配置 - 图1

3.从库配置

3.1msyql配置文件修改server-id

[mysqld]
server-id=110
重启从库 两台mysql
打开mysql回话执行同步sql

3.2 修改uuid

查找到mysql的安装地址show variables like ‘datadir’;
通过mysql生成一个uuid进行记录等会用于修改select uuid()
然后进入datadir目录cd /var/lib/mysql/
//修改server-uuid
重启mysql
service mysqld restart

3.3从库1 sql

CHANGE MASTER TO MASTER_HOST=’192.168.39.135’, MASTER_USER=’slave1’, MASTER_PASSWORD=’密码’, MASTER_LOG_FILE=’mysql-bin.000014’, MASTER_LOG_POS=154;#
start slave; #开启从库模式
查看从库状态
show slave status\G;
mysql主从复制配置 - 图2

Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功
常见问题:
Slave_SQL_Running: No
Last_Error:会有提示原因
出现上述情况说明数据主从发生故障。
1、可能是主库的表,在从库中没有找到
解决方法:跳过这次错误继续进行
1、先停止同步:mysql>stop slave;
2、使用命令:mysql>set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
3、开启同步:mysql>start slave;
4、使用命令:mysql>show slave status\G,查看Slave_SQL_Running的值,如果不为Yes,则重复上述3步,直到为Yes
slave_io_running:no
解决办法如下
查看主服务器状态
show master status\G
mysql主从复制配置 - 图3
查看从服务器状态
show slave status\G
mysql主从复制配置 - 图4
问题所在:发现Master_Log_File没有对应。
出现Slave_IO_Running: No的机器上操作,即从库上进行操作
3.1停止主从复制 slave stop;
3.2 CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000026’, MASTER_LOG_POS=0;
3.3 slave start;
3.4 show slave status\G

mysql从机上已经进行过绑定了,如果继续绑定需要先进行重置。**

解决办法
1、停止已经启动的绑定
stop slave
2、重置绑定
reset master
3、执行复制主机命令
change master to master_host = ‘192.168.12.1’ master_user = ‘slave’ ,master_password =’123456’ ,master_log_file = ‘mysql-bin.000004’,master_log_pos = ‘881’
4、发现此时已经不报错
5、启动复制
start slave