部署mysql主從復制
Mysql master ip: 192.168.30.25 一主兩從
Mysql slave ip: 192.168.30.24
Mysql slave ip:192.168.30.23
關閉防火牆
[root@master ~]# setenforce 0
[root@master ~]# iptables -F
[root@master ~]# systemctl stop firewalld
在mysql master 上的配置NTP時間同步服務器
[root@master ~]# yum -y install ntp
[root@master ~]# vim /etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 startum 8
啟動NTP服務
[root@master ~]# systemctl enable ntpd
[root@master ~]# systemctl start ntpd
在2個slave節點上配置與master進行時間同步
[root@slave1 ~]# yum -y install ntpdate
[root@slave1 ~]# /usr/sbin/ntpdate 192.168.30.25
所有機器安裝mariadb
[root@master ~]# yum -y install mariadb mariadb-server mariadb-devel
配置mysql master 服務器
1,在etc/my.cnf中修改或者增加如下內容
[mysqld]
Server-id=1
Log-bin=mysql-binlog
Log-slave-ipdates=ture
重啟mysql服務器
[root@master ~]# systemctl start mariadb
2,創建replication用戶
Replication slave 用於復制從屬服務器,(從主服務器中讀取二進制日志事件權限
[root@master ~]# mysql -u root
MariaDB [(none)]> grant replication slave on *.* to 'myslave'@'192.168.30.%'identified by '123456';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> show master status;
+---------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------------+----------+--------------+------------------+
| mysql-binlog.000003 | 475 | | |
+---------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
MariaDB [(none)]> exit
3,獲得Master DB 的相關信息
供Slave 連接時使用,記錄下file和position的值
4,備份matser原有數據此處省略
5,從庫連接主庫進行測試,如果連接成功說明主庫配置成功
[root@slave1 ~]# mysql -u myslave -p123456 -h 192.168.30.25
[root@slave2 ~]# mysql -u myslave -p123456 -h 192.168.30.25
在從服務器都修改Mysql 配置文件
Vim /etc/my.cnf
Server-id = 2
Relay-log=relay-log-bin
Rela:y-log-index=slave-relay-bin.index
配置多個從服務器時依次設置server-id號
修改完重啟數據庫
[root@slave1 ~]# systemctl restart mariadb
6,在slave 服務器授權,啟動從庫,進行主從庫同步
[root@slave1 ~]# mysql -u root
MariaDB [(none)]> stop slave;
MariaDB [(none)]> change master to
-> master_host='192.168.30.25',
-> master_user='myslave',
-> master_password='123456',
-> master_log_file='mysql-binlog.000003',
-> master_log_pos=475;
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> show slave status\G
在master查看授權成功
[root@master ~]# netstat -anpt |grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 4162mysqld
tcp 0 0 192.168.30.25:3306 192.168.30.23:58866 ESTABLISHED 4162mysqld
tcp 0 0 192.168.30.25:3306 192.168.30.24:59174 ESTABLISHED 4162mysqld
進行測試是否成功
主庫當前存在的庫
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.01 sec)
從庫當前的庫
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
主庫添加創建庫和表
MariaDB [(none)]> create database sampdb;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> use sampdb;
Database changed
MariaDB [sampdb]> create table new(name char(20),phone char(20));
Query OK, 0 rows affected (0.08 sec)
MariaDB [sampdb]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sampdb |
| test |
+--------------------+
5 rows in set (0.00 sec)
從庫驗證
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sampdb |
| test |
+--------------------+