本節我們要講的是mysql的主從複製,之所以要進行主從複製,主要是可以進行讀寫分離,減輕mysql服務器的壓力。那麼下面我們就來看看如何實現主從複製。
複製的功用:
負載均衡
數據分佈
備份
高可用性
mysql升級測試
缺點:
單點
寫操作無法均衡
mysql複製的工作原理:
將主節點的的二進制日誌放到從節點上重新執行一遍
複製的三個步驟:
1、在主庫上啓用二進制日誌
2、備庫衝主庫複製二進制日誌,並保存至本地的中繼日誌中;
3、 備庫從中繼日誌中讀取事件並於本地執行一次。
主從複製框架
master:172.16.6.1
slave:172.16.6.2
注意:slave版本必須與master相同,或者更高,因爲從節點必須兼容主節點。如果在一個已存在數據的主服務器上部署備服務器,要先備份主服務器的數據,備份的時候做好二進制日誌位置記錄 ,然後恢復到從服務器上,並指定從服務器的從主服務器二進制日誌的複製位置,從時間點開始複製。
master端
配置文件中加入以下項:
[mysqld]
log-bin=/var/log/master-bin 定義二進制日誌
binlog_format=mixd 格式
sync_binlog=1 同步二進制日誌
server-id=10 主從節點必須不一致
啓動mysql並創建用戶
mysql>
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repl@'172.16.6.%' IDENTIFIED BY '123456';
mysql>
FLUSH PRIVILEGES;
查看二進制
show master status; mysql>
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 | 486 | | |
+-------------------+----------+--------------+------------------+
1 row in set (0.02 sec)
slave端
配置文件中加入以下項:
[mysqld]
# log-bin=/mydata/bin-log/master-bin # 從節點中禁用二進制日誌
# binlog_format=mixed
relay-log=/var/log/relay-bin #啓用中繼日誌
sync_binlog = 1
server-id = 20
read_only = 1
連接主服務器:
mysql> CHANGE MASTER TO MASTER_HOST='172.16.6.1',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_LOG_FILE='master-bin.00001',MASTER_LOG_POS=486;
mysql>
START SLAVE;
啓動線程IO_THREAD和SQL_THREAD:
start slave IO_THREAD; mysql>
Query OK, 0 rows affected (0.00 sec)
start slave SQL_THREAD; mysql>
Query OK, 0 rows affected (0.00 sec)
show slave status\Gmysql>
好了下面就可以進行測試了。
master
在主節點中創建數據庫
create database mwj; mysql>
Query OK, 1 row affected (0.00 sec)
show databases; mysql>
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| mwj |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.03 sec)
slave
在從節點中查看是否同步
show databases; mysql>
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| mwj |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.02sec)
OK,複製成功,那麼本節的實驗就到這裏,謝謝!