说明:实现该操作需主库已经开启了binlog日志和指定server-id . (这样我们可以在不重启主库的情况下增加从库或者单表从库同步)
注意:此操作不要在跨binlog文件时候执行。
主库大概配置:
# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
character-set-server=utf8
default-storage-engine = InnoDB
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1
slow_query_log = 1
long_query_time = 5
log_queries_not_using_indexes = 1
max_connect_errors = 20
validate_password_policy=0
validate_password_length=5
max_connections=10000
server-id=1
log-bin=mysql-bin
binlog-ignore-db=information_schema,performance_schema,mysql,sys
expire_logs_days = 7
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
以上配置,在主库启动后,我们可以不用再重启主库了。
主库增加复制用户:
create user repuser01 identified by 'repuserpwd';
grant replication slave on *.* to repuser01;
或者
【 grant replication slave on *.* repuser01 identified by 'repuserpwd'; 】
主库上执行表备份操作:
mysqldump database_name -uroot -p --skip-opt --events --single-transaction --master-data=2 --tables table1_name > table1.sql
注意:
--master-data=2选项将会增加记录对应binlog文件和pos id节点。用于配置从库同步的复制开始节点。
从库增加指定表复制的配置信息:
# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
character-set-server=utf8
default-storage-engine = InnoDB
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1
slow_query_log = 1
long_query_time = 5
log_queries_not_using_indexes = 1
max_connect_errors = 20
validate_password_policy=0
validate_password_length=5
max_connections=10000
server-id=3
replicate-do-table=byd.__u_relation
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
增加好参数后重新启动从库。
登陆从库,停止从库同步线程操作(默认停止了)。
配置同步:
change master to master_host='192.15.62.11', master_user='repuser01',master_password='repuserpwd',master_log_file='mysql-bin.000177', master_log_pos=45881;
启动从库同步线程,验证即可。

