首先 主从库的mysql都需要打开binlog
主库配置文件中server-id与从库的server-id不能相同 建议主库设置为1
#主库配置只记录某几个库表的binlog
binlog-do-db 二进制日志记录的数据库(多数据库用逗号,隔开)
binlog-ignore-db 二进制日志中忽略数据库 (多数据库用逗号,隔开)
#从库配置只同步哪些库表
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功能一样,但是可以加通配符
增加通配符的两个配置
replicate-wild-do-table=db_name.% 只复制哪个库的哪个表
replicate-wild-ignore-table=mysql.% 忽略哪个库的哪个表
为了安全考虑 给主库设置一个用户只用来进行主从同步:
GRANT REPLICATION SLAVE ON *.* TO '用户名'@'允许登录的地址' IDENTIFIED BY '密码';
FLUSH PRIVILEGES;
允许登录的地址可以不设置为% 设置为从库的固定ip 更安全
设置好以后可以在从库的服务器上测试一下看看这个账户是否可以登录:
mysql -h 主库地址 -u用户名 -p密码
如果不能登录请查看防火墙的设置
之后在主库查看binlog的状态
show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000011 | 880 | | |
+------------------+----------+--------------+------------------+
记住file 和position
这是在从库进行主从同步的连接配置
CHANGE MASTER TO
MASTER_HOST='主库ip',
MASTER_USER='主从同步账户',
MASTER_PASSWORD='主从同步密码',
MASTER_LOG_FILE='上面的file',
MASTER_LOG_POS=上面的position;
start slave;
开始主从同步
show slave status;
查看主从同步状态 注意此时Slave_Io_Running 和 Slave_SQL_Running 都是yes才行 如果有no请查看mysql的错误日志
这时候在主服务器的mysql上做一些操作 从库就可以同步了
如果从库重启的话需要再开一次主从同步 start slave