部署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)

从上面的结果可以看到数据同步成功。

 

 

posted @ 2020-12-15 17:02  Ealien  阅读(121)  评论(0)    收藏  举报