部署mysql主从同步
1. 环境:
|
主机名 |
IP |
系统版本/MYSQL版本 |
角色 |
|
cong11 |
192.168.0.136 |
Centos7.5/5.7.26 |
Master |
|
cong12 |
192.168.0.138 |
Centos7.5/5.7.26 |
slave |
2. 配置时间服务器
安装NTP
[root@cong11 ~]# yum -y install ntp
配置NTP
[root@cong11 ~]# vim /etc/ntp.conf //添加如下两行
server 127.127.1.0
fudge 127.127.1.0 stratum 8
[root@cong11 ~]# systemctl enable ntpd
在服务器上关闭防火墙或指定端口进行开放(ntp协议——upd 123端口)
[root@cong11 ~]# systemctl stop firewalld
[root@cong11 ~]# systemctl disable firewalld
在从节点上进行时间同步
[root@cong12 ~]# yum -y install ntpdate
[root@cong12 ~]# /usr/sbin/ntpdate 192.168.30.11
配置cron计划任务
[root@cong12 ~]# crontab -l
*/10 * * * * /usr/sbin/ntpdate 192.168.0.136
3. 配置主数据库服务器cong11
mysql> create database HA;
mysql> use HA;
mysql> create table T1(id int,name varchar(20));
mysql> insert into T1 values(1,'Tom1');
4. 创建主从复制的授权用户
mysql>grant replication slave on *.* to slave@192.168.0.138 identified by "123456";
5. 配置my.cnf
[root@cong11 ~]# vim /etc/my.cnf 添加以下内容
[mysqld]
………….. //省略部分内容
log-bin=/data/mysql/log/mysql-bin-master #启用二进制日志
server-id=1 #数据库服务器ID标识
binlog-do-db=HA #可以被从服务器复制的库, 即二进制需要同步的数据库名
6. 重启mysql
[root@cong11 ~]# systemctl restart mysqld
7. 查看master状态信息
mysql> show master status; //显示主服务器的当前binlog文件及事件位置
8. 查看二进制日志
mysql> show binlog events\G;
9. 导出数据库
复制前要保证同步的数据库一致性
[root@cong11 ~]# mysqldump -uroot -p123456 HA >HA.sql #可以导出数据库
将导出的数据库传给从服务器
[root@cong11 ~]# scp HA.sql root@192.168.0.138:~
10. 配置从数据库cong12
10.1. 两台数据库服务器mysql版本要一致
mysql> show variables like '%version%';
10.2. 测试连接到主服务器是否成功
[root@cong12 ~]# mysql -uslave -p123456 -h 192.168.0.136
mysql> show databases; #只有复制的权限, 是看不到其他库的。正常
10.3. 导入数据库,和主数据库服务器保持一致
[root@cong12 ~]# mysql -uroot -p123456 -e "create database HA;"
[root@cong12 ~]# mysql -uroot -p123456 HA<HA.sql
10.4. 关闭mysql
[root@cong12 ~]# systemctl stop mysqld
10.5. 修改my.cnf配置文件
[root@cong12 ~]# vim /etc/my.cnf
server-id=2 #从服务器ID号,不要和主ID相同 ,如果设置多个从服务器,每个从服务器必须有一个唯一的server-id值,必须与主服务器的以及其它从服务器的不相同。这些ID值能唯一识别复制服务器群集中的每个服务器实例
relay-log=/data/mysql/log/relay-log-bin #中继日志文件的路径名称
relay-log-index=/data/mysql/log/slave-relay-bin.index #中继日志索引文件的路径名称
10.6. 重启服务
[root@cong12 ~]# systemctl start mysqld
10.7. mysql数据库里从配置
[root@cong12 ~]# mysql -uroot -p123456
mysql> stop slave; #停止slave
mysql>change master to master_host='192.168.0.136',master_user='slave',master_password='123456',master_log_file='mysql-bin-master.000001',master_log_pos=614;
截图如下:
mysql> start slave; #启动slave
mysql> show slave status\G //查看slave的状态
在主服务器上查看binlog dump线程
[root@cong11 ~]# mysql -uroot -p123456
mysql> show processlist \G;
在从服务器上查看I/O线程和SQL线程
11. 主服务器插入数据测试同步
mysql> use HA;
mysql> insert into T1 values(1,'tom2');
mysql> select * from T1;
+------+------+
| id | name |
+------+------+
| 1 | Tom1 |
| 1 | tom2 |
+------+------+
2 rows in set (0.00 sec)
在从服务器查看数据是否同步
mysql> use HA;
mysql> select * from T1;
+------+------+
| id | name |
+------+------+
| 1 | Tom1 |
| 1 | tom2 |
+------+------+
2 rows in set (0.00 sec)
从上面的结果可以看到数据同步成功。

浙公网安备 33010602011771号