首先要注意的是,两台服务器要是一样的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的写操作!
文章评论