CentOS-7.5 搭建 MySQL 主從複製

1、實驗環境
兩臺一樣配置的CentOS-7.5虛擬機;
兩臺虛機的防火牆+selinux均關閉;
兩臺虛機都可以上外網;
master:CentOS-1(192.168.218.128)
slave: CentOS-2 (192.168.218.136)mysql

2、搭建主從複製
1)兩臺服務器同時安裝MySQL服務
說明:由於本人以前已經寫過「CentOS-7.5 安裝 社區版 MySQL-5.7」這樣的博文,因此在此就不在作重複性動做了;兩臺虛擬機安裝MySQL服務的操做是一摸同樣的,直接複製粘貼便可
博文連接爲:http://www.javashuo.com/article/p-wiyqautr-gt.htmllinux

2)修改兩臺MySQL的配置文件
master端以下:
CentOS-7.5 搭建 MySQL 主從複製sql

slave端以下:
CentOS-7.5 搭建 MySQL 主從複製數據庫

切記:修改完配置文件之後,都要重啓MySQL服務使配置生效服務器

3)mysql主服務器初始化之後的第一次全備
[root@CentOS-1 ~]#
[root@CentOS-1 ~]# mysqldump -uroot -p'Mysql.2020' --all-databases --single-transaction > /tmp/mysql_all.sql #數據庫第一次全量備份
mysqldump: [Warning] Using a password on the command line interface can be insecure.
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.
[root@CentOS-1 ~]#
[root@CentOS-1 ~]#
[root@CentOS-1 ~]# ll /tmp | grep 'mysql*'
CentOS-7.5 搭建 MySQL 主從複製ide

4)將mysql主服務器的第一次全備拷貝到從服務器
[root@CentOS-1 ~]#
[root@CentOS-1 ~]# scp /tmp/mysql_all.sql root@192.168.218.136:/tmp/ #將數據庫的全備文件從主服務器拷貝到從服務器
CentOS-7.5 搭建 MySQL 主從複製ui

在從服務器端進行查看:
[root@CentOS-2 ~]#
[root@CentOS-2 ~]# ll /tmp | grep 'mysql*'
CentOS-7.5 搭建 MySQL 主從複製this

5)在從服務器端進行全備恢復
[root@CentOS-2 ~]#
[root@CentOS-2 ~]# mysql -uroot -p'Mysql.2020' < /tmp/mysql_all.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@CentOS-2 ~]# 3d

此時,master端和slave端數據處於一致狀態rest

6)主服務器對從服務器的受權

主服務器端執行:
[root@CentOS-1 ~]#
[root@CentOS-1 ~]# mysql -uroot -p‘Mysql.2020’
mysql>
mysql> grant replication slave on . to repluser@192.168.218.136 identified by 'Mysql.2019'; #受權repluser帳戶能夠經過從服務器192.168.218.136來複制主服務器的全部庫和全部表
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql>
mysql> flush privileges; #刷新權限
Query OK, 0 rows affected (0.00 sec)

mysql>
CentOS-7.5 搭建 MySQL 主從複製

從服務器端執行:
[root@CentOS-2 ~]#
[root@CentOS-2 ~]# mysql -uroot -p'Mysql.2020'
mysql>
mysql> change master to master_host='192.168.218.128',master_user='repluser',master_password='Mysql.2019',master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.11 sec)

mysql>
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

mysql>
mysql> show slave status\G #查看slave狀態
CentOS-7.5 搭建 MySQL 主從複製

3、驗證主從同步是否成功

思路:若是在master端插入或者刪除SQL語句,在slave端能出現同樣效果的話,就說嘛主從同步配置成功

1)在驗證前,先對比master和slave數據是否一致
master服務器端執行:
[root@CentOS-1 ~]#
[root@CentOS-1 ~]# mysql -uroot -p'Mysql.2020' #登陸master
mysql>
mysql> show databases;
CentOS-7.5 搭建 MySQL 主從複製

slave服務器端執行:
[root@CentOS-2 ~]#
[root@CentOS-2 ~]# mysql -uroot -p'Mysql.2020' #登陸slave
mysql>
mysql> show databases;
CentOS-7.5 搭建 MySQL 主從複製

對比結果:驗證前的master和slave兩端數據一致

2)在master端建立數據庫並插入數據
mysql>
mysql> create database db_1;
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> use db_1;
Database changed
mysql>
mysql> create table Student(
-> Sid varchar(10),
-> Sname nvarchar(10),
-> Sage datetime,
-> Ssex nvarchar(10)
-> );
Query OK, 0 rows affected (0.13 sec)

mysql>
mysql> desc Student;
CentOS-7.5 搭建 MySQL 主從複製
mysql>
mysql>
mysql> insert into Student values('01','張磊','1995-02-08','男');
Query OK, 1 row affected (0.01 sec)

mysql>
mysql> insert into Student values('02','李華','1995-06-11','男');
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> insert into Student values('03','王青','1996-01-06','男');
Query OK, 1 row affected (0.01 sec)

mysql>
mysql> select * from Student;
CentOS-7.5 搭建 MySQL 主從複製

3)去slave端查看是否存在master中插入的數據
[root@CentOS-2 ~]#
[root@CentOS-2 ~]# mysql -uroot -p'Mysql.2020'
mysql>
mysql> show databases;
CentOS-7.5 搭建 MySQL 主從複製
mysql> use db_1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql>
mysql> show tables;
CentOS-7.5 搭建 MySQL 主從複製
mysql>
mysql> desc Student;
CentOS-7.5 搭建 MySQL 主從複製
mysql>
mysql> select * from Student;
CentOS-7.5 搭建 MySQL 主從複製

4)在master端刪除數據
mysql>
mysql> drop database db_1;
Query OK, 1 row affected (0.01 sec)

mysql>
mysql> show databases;
CentOS-7.5 搭建 MySQL 主從複製

5)去slave端查看db_1數據庫是否還存在
mysql>
mysql> show databases;
CentOS-7.5 搭建 MySQL 主從複製

結論:經驗證得出,MySQL-5.7主從同步搭建成功

相關文章
相關標籤/搜索