MySQL主库已经有数据库,如何让从库同步主库数据
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 忽略的复制库 然后重启数据库
<< 上一篇
网友留言(0 条)