Centos7 Mariadb主從複製

實驗環境

主Mariadb:
centos 7
master:192.168.14.210

從Mariadb:
centos 7
slave:192.168.14.211

主從複製介紹:

第一步:master記錄二進制日誌。在每個事務更新數據完成之前,master在二日誌記錄這些改變。Mariadb將事務寫入二進制日誌,即使事務中的語句都是交叉執行的。在事件寫入二進制日誌完成後,master通知存儲引擎提交事務。

第二步:slave將master的binary log拷貝到它自己的中繼日誌。首先,slave開始一個工作線程——I/O線程。I/O線程在master上打開一個普通的連接,然後開始binlog dump process。Binlog dump process從master的二進制日誌中讀取事件,如果已經執行完master產生的所有文件,它會睡眠並等待master產生新的事件。I/O線程將這些事件寫入中繼日誌。

第三步:SQL slave thread(SQL線程)處理該過程的最後一步。SQL線程從中繼日誌讀取事件,並重新執行其中的事件而更新slave的數據,使其與master中的數據一致。

模式: C/S 模式

端口:3306

一、安裝mariadb(兩臺)

1、安裝

[root@master ~]# yum install -y mariadb-server mariadb

[root@slave ~]# yum install -y mariadb-server mariadb

2、防火牆允許訪問3306

[root@master ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@master ~]# firewall-cmd --reload

[root@slave ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@slave ~]# firewall-cmd --reload

二、主節點

1、修改配置文件

[root@master ~]# vi /etc/my.cnf
[mysqld]
server-id=1
log-bin
binlog-format=row

說明:

log-bin #啓用二進制日誌,默認存在/var/lib/mariadb 下面
server-id=1 #本機數據庫ID 唯一標示。

2、啓動mysql服務

[root@master ~]# systemctl start mariadb
[root@master ~]# mysql -e "SHOW MASTER LOGS;"
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |       245 |
+--------------------+-----------+

3、授權給從節點複製的賬號

[root@master ~]# mysql -e "GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'192.168.14.%' IDENTIFIED BY 'centos';"  

三、從節點

1、修改配置文件

[root@slave ~]# vi /etc/my.cnf
[mysqld]
server-id=2
log-bin
binlog-format=row
read-only        #使用ProxySQL讀寫分離的時候需要填寫

2、啓動數據庫服務

[root@slave ~]# systemctl start mariadb

3、寫入CHANGE MASTSER TO信息

[root@slave ~]# mysql
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.14.210', MASTER_USER='repluser',MASTER_PASSWORD='centos',MASTER_PORT=3306,MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=245;  

4、啓動複製線程

MariaDB [(none)]> start slave;

停止:stop slave

重置:reset slave

5、查看狀態

MariaDB [(none)]> show slave status \G

四、測試主從複製

1、主節點創建數據庫並添加表

MariaDB [(none)]> create database my_db;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> use my_db;
Database changed
MariaDB [my_db]> create table stu (age int,name char(40));
Query OK, 0 rows affected (0.03 sec)


MariaDB [my_db]> show tables;
+-----------------+
| Tables_in_my_db |
+-----------------+
| stu             |
+-----------------+
1 row in set (0.00 sec)


MariaDB [my_db]> insert into stu values(210,'master');
Query OK, 1 row affected (0.03 sec)

MariaDB [my_db]> select * from stu;
+------+--------+
| age  | name   |
+------+--------+
|  210 | master |
+------+--------+
1 row in set (0.00 sec)

MariaDB [my_db]> flush privileges;
Query OK, 0 rows affected (0.01 sec)

查看主節點二進制日誌

2、從節點查看

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| my_db              |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.01 sec)

MariaDB [(none)]> use my_db;
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
MariaDB [my_db]> select * from stu;
+------+--------+
| age  | name   |
+------+--------+
|  210 | master |
+------+--------+
1 row in set (0.00 sec)

到此主從複製配置成功

 

發佈了141 篇原創文章 · 獲贊 124 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章