MySQL主库已经有数据库,如何让从库同步主库数据,MySQL主从同步
admin2024-08-13 15:11:14数据库教程
1.配置主库my.cnf文件,主库配置log-bin和server-id参数,从库配置server-id,不能和主库及其他从库一样,一般不开启从库log-bin功能,
注意:配置参数后要重启生效。
log-bin=mysql-bin
server-id = 1
登录主库检查是否开启成功,看目录下是否有logbin日志,或者登录主库的mysql通过下面的命令检查状态,等于ON。
show variables like "log_bin";
2.登录主库增加用于从库连接主库同步的账户例如:rep,并授权replication slave同步的权限。
grant replication slave on *.* to 'rep'@'192.168.1.%' identified by 'shnne123456';
flush privileges;
3.备份主库所有需要的数据库
备份单个库
mysqldump -F --single-transaction --master-data=1 --complete-insert -uroot -pshnne2011 --opt ab1 > ab1.sql
备份多个库
mysqldump -F --single-transaction --master-data=1 --complete-insert -uroot -pshnne2011 --opt --databases ab1 ab2 ab3 > all.sql
4.从库的配置只要server-id和主库不同即可,忽略掉不需要的数据库,修改配置文件后需要重启数据库才能生效。
server-id = 2
slave-skip-errors = 1062
replicate-ignore-db=information_schema,mysql,performance_schema,test
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%
replicate_wild_ignore_table=test.%
重启数据库,然后还原整个库,查看备份sql备份里面的pos
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.016236', MASTER_LOG_POS=114;
然后登陆从库
执行
CHANGE MASTER TO MASTER_HOST='192.168.1.101',MASTER_PORT=3306,MASTER_USER='rep',MASTER_PASSWORD='shnne123456',MASTER_LOG_FILE='mysql-bin.00001',MASTER_LOG_POS=114;
在start slave;
附:
replicate-do-db 设定需要复制的数据库
replicate-ignore-db 设定需要忽略的复制数据库
replicate-do-table 设定需要复制的表
replicate-ignore-table 设定需要忽略的复制表
replicate-wild-do-table 同replication-do-table功能一样,但是可以通配符
replicate-wild-ignore-table 同replication-ignore-table功能一样,但是可以加通配符
5.如果已经开启过主从,将备份的库拷贝到从库,登陆从库,stop slave,
如果是单个库备份,需要先创建在还原,
如果是多个库的备份,直接执行还原
然后在start slave;
查看状态并测试
show slave status\G
7.从库变主库,
stop slave io_thread
stop slave;
reset slave all;(如果没有删除master.info,手动删除)
删除my.cnf里的修改的内容,如
server-id = 1
忽略的复制库
然后重启数据库