mysql复制相关

来源:互联网 发布:淘宝618大促报名入口 编辑:程序博客网 时间:2024/06/06 07:26

1.复制时,需要开启binlog和配置serverid,在/etc/my.cnf增加如下两行

server_id=211413306

/data/mariadb/data/binlog

说明一下设置server_id一般用ip地址的后面2位然后加上端口号,

例如:你的数据库服务器的ip地址是172.16.21.141,端口号是3306,则设置为server_id=211413306

如果复制过程不想复制某些库,可以增加以下几行

replicate_wild_ignore_table     = db_check.%
replicate_wild_ignore_table     = information_schema.%
replicate_wild_ignore_table     = performance_schema.%

这几行告诉mysql:db_check,information_schema,performance_schema不需要复制

有的情况下,你只需要复制某些库,可以用以下这个参数

replicate_wild_do_table         = dataCenter.%

这个参数告诉mysql:只复制dataCenter这个数据库,其他库不复制

以上参数都在生产环境中测试过

当然也可以用其他参数达到以上的目的,如下面的这两个参数

replicate_do_db和replicate_ignore_db

但是很多人说是有风险的,这两个参数本人没有做测试,风险的原因就是mysql在执行sql语句前,检查当前的默认数据库,跨库语句就会被省略

2.还有就是很多时候,我们会希望一条SQL语句只在Master数据库上执行,而不复制到Slave数据库,这时候需要设置这个参数sql_log_bin

如我想在master库上删除test这个数据库,但是backup这个数据库上的test不被删除,就可以这样做

set sql_log_bin=0;

drop database test;

使用这个参数,你需要保持头脑清醒,千万不要不假思索的加上global(如:set global sql_log_bin=0),

如果你那样做了,drop,insert,delete,update会导致master和backup数据不一致

3.有时候需要设置binlog过期,设置过期前查看一下binlog

show master logs;

会列出系统中的binlog名称及大小

select @@expire_logs_days;

查看系统设置的过期时间



0 0
原创粉丝点击