环境
linux
mysql5.6
一台作为master: 192.168.134.29
一台作为slave: 192.168.134.30
分别创建test数据库
create database test default character set utf8 collate utf8_general_ci;
创建复制账号
在master的服务器上的mysql中创建一个账号,并提供复制权限:
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'192.168.134.30' IDENTIFIED BY 'slave';
master和slave配置
更改my.conf
master上的配置:
[mysqld]
server-id=1
auto-increment-increment=2
auto-increment-offset=1
log-bin
binlog-do-db=test
binlog-format=mixed
slave上的配置:
server-id=2
binlog-do-db=test
指定slave的master
注:很多网上的教程会配master-host之类的,但是这种配置已经废弃了。
在slave服务器上的mysql中执行
CHANGE MASTER TO MASTER_HOST='192.168.134.29',
MASTER_USER='slave',
MASTER_PASSWORD='slave';
分别重启服务器。
最简单的mysql replication就完成了。
那么,如果需要指定表复制呢?
在master上加上:
replicate-wild-do-table=test.log
replicate-wild-do-table=test.user
如果数据库名字都不一样呢?
在slave上加上
replicate-rewrite-db=test->test_new
是不是觉得差不多了?别开玩笑了,就看看官方文档吧!
mysql官方文档