一、主库配置:my.cnf
#数据库ID号, 为1时表示为Master,其中master_id必须为1到232–1之间的一个正整数值;
server-id = 1
#启用二进制日志;
log-bin=mysql-bin
#需要同步的二进制数据库名;
binlog-do-db=test
#不同步的二进制数据库名,如果不设置可以将其注释掉;
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=personalsite
#设定生成的log文件名;
log-bin="***"
#把更新的记录写到二进制文件中;
log-slave-updates
二、从库配置:my.cnf
#如果需要增加Slave库则,此id往后顺延;
server-id = 2
log-bin=mysql-bin
#主库host
master-host = 192.168.194.193
#在主数据库服务器中建立的用于该从服务器备份使用的用户
master-user = mysync
master-password = 123456
master-port = 3306
#如果发现主服务器断线,重新连接的时间差;
master-connect-retry=60
#不需要备份的数据库;
replicate-ignore-db=mysql
#需要备份的数据库
replicate-do-db=test
log-slave-update
进入主数据库服务器,创建上面备份使用的用户名和密码,同时授权replication slave,super和reload
grant replication slave,super,reload on minishop.* to mysync@192.168.194.195 identified by '123456';
change master to master_host='192.168.194.193',master_user='root',master_password='123456', master_log_file='mysql-bin.000008',master_log_pos=337;
检查slave状态:
show slave status\G;
主要是两个参数:
Slave_IO_Running: Yes --IO文件(同步时的二进制文件)。
Slave_SQL_Running: Yes --SQL语句
遇到问题:
1、主从数据库server_id 相同报错。(由于是直接克隆的虚拟机,所以会出来此问题)
错误信息:Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs;these UUIDs must be different for replication to work.
查看之后,server_id不相同。是server_uuid相同。
/var/lib/mysql/auto.cfg 查看server_uuid,果然与主数据库相同。
将auto.cfg文件重命名,然后重启从库服务,service mysql restart,重新生成auto.cfg文件,问题解决。
2、检查从库数据同步时出错。
1)、主从log_file名字不同,或log_pos不同,导致从库去主库找二进制文件(同步数据)时,找不到,报错;
报错信息:Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
解决方法:重新修改从库配置(语句):change master to master_host='192.168.194.193',master_user='root',master_password='123456', master_log_file='mysql-bin.000008',master_log_pos=337;
修改之前可以去主库中,show master status,就可以看到主库的二进制文件名和pos了。
2)、Slave_SQL_Running: No 同步数据时,sql语句报错。
报错信息:Error 'Table 'test.tf_f_user' doesn't exist' on query. Default database: 'test'. Query: 'INSERT INTO `tf_f_user` (`id`, `name`, `sex`, `mobile`, `password`, `email`) VALUES ('2', 'yangmm', '1', '1', '123456', 'yangmm@asiainfo.com')'//具体的报错信息
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;
mysql主从配置
最新推荐文章于 2024-11-05 15:51:41 发布