MySQL之设置数据库之间主主同步---主主同步,相互备份

来源:互联网 发布:江苏远洋数据有限公司 编辑:程序博客网 时间:2024/05/20 14:25

首先准备两台线下服务器或者两台主机的电脑;都装有相同版本的mysql;

比如现在有两个数据库;

M1:192.168.110.*1----------root-------123456

M2:192.168.110.*2---------root--------123456

创建相同的数据库;并制定数据库的默认引擎是MyISAM;指定引擎和编码格式;

create database tree default character set utf8;

两台服务器都要设置相同的数据库(tree);

对两个数据设置远程访问;

grant replication slave on *.* to 'root'@'192.168.110.*1' identified by '123456'; 
保证两台服务器之间可以相互远程访问即可;

mysql -hIP -uroot -p123456

第二:创建完毕之后找到mysq的配置文件my.cnf

修改里面的配置:

[mysqld] 
binlog-do-db=db_rocky #需要记录进制日志的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项 
binlog-ignore-db=mysql #不需要记录进制日志的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项 
replicate-do-db=db_rocky #需要进行同步的数据库.如果有多个数据库可用逗号分隔,或者使用多个replicate-do-db选项 
replicate-ignore-db=mysql,information_schema #不需要同步的数据库.如果有多个数据库可用逗号分隔,或者使用多个replicate-ignore-db选项 
#同步参数: 
#保证slave挂在任何一台master上都会接收到另一个master的写入信息 
log-slave-updates 
sync_binlog=1 
auto_increment_offset=1 
auto_increment_increment=2 
slave-skip-errors=all #过滤掉一些没啥大问题的错误

两台数据库配置是一样的;只要保证server-id不相同即可;默认为1;

重启数据库;

第三:查看两台主数据库的状态:

M1服务器上:show master status;


M2服务器上:show master status;


然后在M1服务器上执行: 

change master to master_host = '192.168.110.*2',master_user='root',master_password='123456',master_log_file='mysql.000003',master_log_pos=106;

如果服务器上之前有打开的slave;需要进行关闭:stop slave;


在M2服务器上执行:

change master to master_host = '192.168.110.*1',master_user='root',master_password='123456',master_log_file='mysql.000002',master_log_pos=106;

然后查看slave的进程状态:show slave status;



暂时只需要关注Slave_IO_Running 和 Slave_SQL_Running 这两个状态是否为YES;

现在在M1和M2服务器上开启slave线程;start slave;

开启之后再查看状态;上述两个属性都显示YES为正常;继续往下执行;

最后进行测试操作;

因为是主主同步;两台服务器都是主库;所以在任意一台服务器下进行均可;

M1上:

create table water (id int(11)) engine = MyISAM defaule charset=utf-8;

insert into water values(1);

然后在M2上查询:

show tables;

select * from water;

能查到数据,那么恭喜你!!说明主主同步数据已经搭建成功了!




0 0
原创粉丝点击