1,搭建slave节点,简单配置my.cnf文件如下:
server_id = 1#要唯一,不能和其他mysql一样
datadir=/usr/local/mysql/data
character-set-server=utf8
log-bin=mysql-bin
binlog-format=ROW
binlog_checksum = NONE
replicate_do_db = eleme#要同步的数据
replicate_do_table = eleme.eleme_order#要同步的数表
log_slave_updates = 1#可以在slave同时产生binlog和relaylog
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
之后重启mysql
2,在master(192.168.1.129)(其实也是个slave(192.168.1.123),相对于本人部署的slave是master)上,停掉即将同步的表,执行命令:stop slave(要有root权限),或者把表锁上,目的不要该表有数据更新。
3,导出要同步的表:mysqldump-u root -p test t_test > t_test.sql
4,在slave节点:执行source ../t_test..sql,如果数据过大,请用screen后台运行。
5,在master创建同步数据用户:
CREATE USER test IDENTIFIED BY 'test';
GRANT SELECT,REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'test'@'%';
FLUSH PRIVILEGES;
6,在mysql执行命令:showmaster status;结果如下:
mysql>show master status;
--------+-------------------+
|File | Position | Binlog_Do_DB | Binlog_Ignore_DB |Executed_Gtid_Set |
+------------------+-----------+--------------+------------------+-------------------+
|mysql-bin.000107 | 815259511 | | | |
+------------------+-----------+--------------+----------
并记下两个参数:mysql-bin.000107,815259511(表锁之后或者stop slave之后)
7,在slave上执行:
CHANGEMASTER TO MASTER_HOST = '192.168.1.129', MASTER_USER = 'test', MASTER_PASSWORD= 'test', MASTER_PORT = 3306, MASTER_LOG_FILE = 'mysql-bin.000107',MASTER_LOG_POS = 815259511
8,在master上执行start slave,或者把表解锁。
9,完毕,数据正常同步过来,简单部署,后期需要对db优化。