mysql主从同步:
一、定义:
主从同步是指将一个数据库服务器上的数据复制到另一个数据库服务器,复制是通过mysql的binlog文件实现。复制过程是异步的,支持断点续传,且可以指定复制某个库或是某个表。
二、机制
slave通过开启I/O Thread读取master的binlog文件,然后写到slave的relay log文件中,slave的SQL线程会检测relay log变化,将relay log解析成SQL执行。
三、配置
1、master服务器配置:
1.1 找到主mysql服务中的my.ini文件,在[mysqld]下添加以下:
server-id=1 #保证唯一
log-bin=mysql-bin #开启bin-log
binlog-do-db=XXXX #指定需要同步的数据库名
1.2 创建一个用户,且赋权。
create user ‘syncUser’@‘%’ identified by ‘XXXX’;
GRANT REPLICATION SLAVE ON . TO ‘syncUser’@‘%’ identified by ‘XXXX’;
flush privileges;
1.3,查看主服务状态,记录下file字段和position字段的值,在配置slave服务时用到
show master status;
2、从服务器
2.1,找到slave服务器中的my.ini文件,在[mysqld]中添加以下:
server-id=2 #保证唯一
2.2,停止服务
stop slave
3,配置与主服务器的连接
change master to master_host=‘127.0.0.1’,master_port=3307,master_user=‘syncUser’,master_password=‘XXXXX’,master_log_file=‘mysql-bin.XXXX’,master_log_pos=XXX;
4,开启服务
start slave;
5,查看状态
show slave status
如果Slave_IO_Running和Slave_SQL_Running都为YES标识主从设置成功。
四、验证
在master中同步的数据库中的表中添加一条数据,在对应的slave表中查看是否新增同一条数据。
五、常见问题
1,Slave_IO_Running: NO
排查原因:
(1)主从网络是否通畅,防火墙是否关闭
(2)新增用户权限是否正确,是否只允许本机访问
(3)确认my.ini文件中配置的server-id是否唯一