master端
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-rewrite-db #重写库名
添加主从配置
1.导出库中指定表
mysqldump -u 用户名-p [dbname] [table1] [table2] > db1-table.sql
2.从库创建好库中还原表
mysqldump -u 用户名-p [dbname] < db1-table.sql
3.修改主库配置文件
#主数据库端ID号
server_id = 1
#开启二进制日志
log-bin = mysql-bin
#需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可
binlog-do-db = db_web_monitor
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
log-bin=mysql-bin
#将从服务器从主服务器收到的更新记入到从服务器自己的二进制日志文件中
log-slave-updates
#控制binlog的写入频率。每执行多少次事务写入一次(这个参数性能消耗很大,但可减小MySQL崩溃造成的损失)
sync_binlog = 1
#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
auto_increment_offset = 1
#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
auto_increment_increment = 1
#二进制日志自动删除的天数,默认值为0,表示“没有自动删除”,启动时和二进制日志循环时可能删除
expire_logs_days = 7
#将函数复制到slave
log_bin_trust_function_creators = 1
#设置logbin格式
binlog_format = row
创建主从同步用户
mysql > grant replication slave on *.* to ‘rep’@‘192.168.253.%’ identified by ‘123456’;
mysql> FLUSH PRIVILEGES;
4.查看主库状态
show master status\G;
5.设置从库配置
server-id = 2
max_binlog_size = 100M
skip_slave_start=1 # 复制进程不会随着数据库的启动而启动,重启数据库后需手动启动;
read_only = 1 # 从库普通账户只读;
master_info_repository=TABLE
relay_log_info_repository=TABLE
slave-skip-errors = 1032, 1062, 1007
replicate-wild-do-table=db_name.% #只复制哪个库的哪个表
6.从库设置同步账户
change master to master_host='yourmaster ip',master_port=3306,master_user='root',master_password='root',master_log_file='mysql-bin.000002',master_log_pos=823;
7.开启从查看从库设置同步账户
slave start;
show slave status\G
注意:
使用replicate-do-db会出现跨库的问题,使用replicate-wild-do-table可以解决问题