景山小窝

  • 首页
  • WOW
  • 奇趣事
  • 手机控
  • 计算机
    • 好软件
    • 路由器
  • 黑苹果
  • 算号器
你若安好,便是晴天。
生气是拿别人的错误惩罚自己。
  1. 首页
  2. 计算机
  3. 正文

两台服务器的主从数据库实时同步-Mysql

2018-09-15 609点热度 0人点赞 0条评论

首先要注意的是,两台服务器要是一样的centos版本,一样的MySQL版本,一样的数据库配置,一样的数据库:

Linux版本 数据库版本 数据库 IP
Centos 7 测试机--》(1) 5.6.37 oa 10.234.145.146
Centos 7 虚拟机--》(2) 5.6.37 oa 10.234.145.55

 

Mysql版本在5.1.7之前是修改配置文件,而之后就不是了,我们用的是之后的版本,所以以我们原本的来做,这里我们把主服务器写为(1)--master,从数据库写为(2) --slave。

--master服务器--

1. 我们打开(1)的数据库配置文件,添加:

Server_id = 1        //1代表它是主服务器,当然我看网上也有写10的

Binlog-do-db = oa    //oa是要同步的数据库

2. 连接数据库,为服务器创建连接账户,用于同步

mysql>GRANT FILE,REPLICATION SLAVE ON *.* TO root@10.234.145.55 IDENTIFIED BY ‘root’;

3. 重启mysql服务:systemctl restart mysql

--slave服务器--

1. Slave链接数据库:

Mysql>show variables like ‘server_id’; //查看slave的server_id是几,如果不是2,就改为2

MySQL>set global server_id=2;   //然后查看是否已改

2. 给权限:

Mysql>grant file on *.* to root@’10.234.145.146’ identified by ‘root’;

1. 查看master上的状态:

 

2. 在slave连接数据库的状态下,stop slave状态下编辑:

MySQL>change master to

>master_host=’10.234.145.146’,

>master_user=’root’,

>master_password=’root’,

>master_log_file=’mysql-bin.000009’, //这个要和master查询的保持一致

>master_log_pos=962;                   //这个就是master查出的Position

3. 然后开启同步:

Mysql>start slave;

4. 查看slave状态:

Mysql>show slave status\G //重点看slave_io_running:yes  slave_sql_running:yes

//如果都为yes就成功了。

//如果io的显示connecting,则有三种情况:1.网络不通,2.pos不对,3.同步密码错误

//如果sql显示no,有两种情况:1.程序可能在slave上进行了写操作,2.slave机器重启后,事务回滚造成的

一般是事务回滚造成的:
解决办法一:
mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave ;

解决办法二、

首先停掉Slave服务:slave stop
到主服务器上查看主机状态:
记录File和Position对应的值

进入master

mysql> show master status;
+----------------------+----------+--------------+------------------+
| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+----------+--------------+------------------+
| localhost-bin.000094 | 33622483 |              |                  |
+----------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

然后到slave服务器上执行手动同步:
mysql> change master to
> master_host='master_ip',
> master_user='user',
> master_password='pwd',
> master_port=3306,
> master_log_file=localhost-bin.000094',
> master_log_pos=33622483 ;
1 row in set (0.00 sec)
mysql> start slave ;
1 row in set (0.00 sec)

mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

手动同步需要停止master的写操作!

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2018-09-15

codeidc

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

codeidc

这个人很懒,什么都没留下

分类
  • WOW
  • 奇趣事
  • 好软件
  • 手机控
  • 未分类
  • 计算机
  • 路由器
  • 黑苹果
归档
  • 2023年2月
  • 2023年1月
  • 2022年11月
  • 2022年4月
  • 2022年3月
  • 2021年11月
  • 2021年10月
  • 2021年1月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月
  • 2018年1月
  • 2017年12月

COPYRIGHT © 2021 codeidc.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备2021031502号