久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MYSQL完全備份、主從復制、級聯復制、半同步的知識點總結

166次閱讀
沒有評論

共計 9740 個字符,預計需要花費 25 分鐘才能閱讀完成。

本篇內容介紹了“MYSQL 完全備份、主從復制、級聯復制、半同步的知識點總結”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

mysql 完全備份

1,啟用二進制日志,并于數據庫分離,單獨存放

vim /etc/my.cnf

添加

log_bin=/data/bin/mysql-bin

創建 /data/bin 文件夾并授權

chown mysql.mysql /data/bin

2,完成備份數據庫

mysqldump -A --single-transaction --master-data=2 | xz   /data/all.sql.xz

3,對數據庫進行增刪改

 INSERT hellodb.students(stuid,name,gender,age) VALUE(27, Lujunyi , M ,30);

4, 停止 MySQL

systemctl stop mariadb.service

5,解壓備份文件

unxz /data/all.sql.xz

6, 查找完全備份時二進制日志的位置

vim /data/all.sql 
 HANGE MASTER TO MASTER_LOG_FILE= mysql-bin.000001 , MASTER_LOG_POS=468

7,導出完成備份后的二進制日志

mysqlbinlog --start-position=468 /data/bin/mysql-bin.000001   /data/inc.sql

8,還原數據

mysql -e  source /data/all.sql 
mysql -e  source /data/inc.sql

9,驗證完成。

誤刪除的恢復

1,啟用二進制日志并與數據庫分開存放

vim /etc/my.cnf

添加

log_bin=/data/bin/mysql-bin

創建 /data/bin 文件夾并授權  

chown mysql.mysql /data/bin

2,對數據庫進行完全備份

mysqldump -A --single-transaction --master-data=2 | xz   /data/all.sql.xz

3,對數據庫進行增刪改

mysql -e  drop table hellodb.students 
 mysql -e  insert hellodb.teachers value (5, wangqi ,50, M)

4, 停止服務

 systemctl stop mariadb.service

5,刪除數據庫

rm -rf /var/lib/mysql/*

6,解壓備份文件

unxz /data/all.sql.xz

7,查看備份文件,查找二進制節點  

 vim /data/all.sql
 -- CHANGE MASTER TO MASTER_LOG_FILE= mysql-bin.000004 , MASTER_LOG_POS=521902;

8,導出二進制日志節點數據

mysqlbinlog --start-position=521902 /data/bin/mysql-bin.000004  /data/inc.sql

9,刪除二進制日志節點數據中誤操作的命令
 

vim /data/inc.sql
DROP TABLE `hellodb`.`students` /* generated by server */

10,啟動服務  

systemctl start mariadb.service

11. 關閉二進制日志記錄

mysql -e  SET sql_log_bin=off

12, 導入備份數據

 mysql  /data/all.sql 
 mysql  /data/inc.sql

13, 驗證完成。

主從復制

# 主服務器

1,主服務器啟用二進制日志,并更改二進制目錄

 vim /etc/my.cnf
 log_bin=/data/bin/mysql-bin
 binlog-format=row
 server-id=1(主從服務器必需保證不同)

更改目錄見上面

2,重啟服務

service mysql restart

3, 創建一個賬戶用來復制數據的賬戶

mysql -e  GRANT REPLICATION SLAVE ON *.* TO  repluser @ 172.22.7.%  IDENTIFIED BY  centos

4,查看主服務器正在使用的二進制日志

 show master logs;
 +------------------+-----------+
 | Log_name | File_size |
 +------------------+-----------+
 | mysql-bin.000001 | 14383 |
 +------------------+-----------+
 1 row in set (0.00 sec)

# 從服務器

5,更配置

 vim /etc/my.cnf
 server-id=2
 read-only
 #log-bin=/data/bin/mysql-bin

6, 啟動服務

service mysql restart

7, 關聯主服務

 MariaDB [(none)] 
 CHANGE MASTER TO MASTER_HOST= 172.22.7.70 , MASTER_USER= repluser , MASTER_PASSWORD= centos , MASTER_PORT=3306, MASTER_LOG_FILE= mysql-bin.000001 , MASTER_LOG_POS=14383;

8,查看從服務器狀態

show slave status\G;

9, 啟動線程

start slave;

# 測試

10, 增刪改主服務器數據,查看從服務器數據是否同步。

主從復制出錯的解決 -sql_slave_skip_counter

#master 服務 ip=172.22.7.70

1,主服務器啟用二進制日志,并更改二進制目錄

 vim /etc/my.cnf
 log_bin=/data/bin/mysql-bin
 binlog-format=row
 server-id=1(主從服務器必需保證不同)

更改目錄見上面

2,重啟服務

service mysql restart

3, 創建一個賬戶用來復制數據的賬戶

mysql -e  GRANT REPLICATION SLAVE ON *.* TO  repluser @ 172.22.7.%  IDENTIFIED BY  centos

4,查看主服務器正在使用的二進制日志

 mysql -e  show master logs; 
 +------------------+-----------+
 | Log_name | File_size |
 +------------------+-----------+
 | mysql-bin.000001 | 264 |
 | mysql-bin.000002 | 245 |
 +------------------+-----------+

#slave 服務 ip=172.22.7.71

5, 修改配置文件, 啟動服務

 vim /etc/my.cnf
 [mysqld]
 server-id = 2
 read-only
 systemctl start mariadb

# 配置錯誤 master 服務信息

6,配置,change master to

 CHANGE MASTER TO 
 MASTER_HOST= 172.22.7.77 , 
 MASTER_USER= wang , 
 MASTER_PASSWORD= lodman ,
 MASTER_PORT=3306, 
 MASTER_LOG_FILE=log-bin.001 , 
 MASTER_LOG_POS=4, 
 MASTER_CONNECT_RETRY=10;

7, 查看 slave 狀態

 mysql -e  show slave status\G 
 Slave_IO_State: 
 Master_Host: 172.22.7.77
 Master_User: wang
 Master_Port: 3306
 Connect_Retry: 10
 Master_Log_File: log-bin.001
 Read_Master_Log_Pos: 4
 Relay_Log_File: ct7m1-relay-bin.000001
 Relay_Log_Pos: 4
 Relay_Master_Log_File: log-bin.001
 Slave_IO_Running: No
 Slave_SQL_Running: No
 ·········略 

8,啟動復制線程

mysql -e  start slave

9, 再次查看 slave 狀態

 mysql -e  show slave status\G 
 Slave_IO_State: 
 Master_Host: 172.22.7.77
 Master_User: wang
 Master_Port: 3306
 Connect_Retry: 10
 Master_Log_File: log-bin.001
 Read_Master_Log_Pos: 4
 Relay_Log_File: ct7m1-relay-bin.000001
 Relay_Log_Pos: 4
 Relay_Master_Log_File: log-bin.001
 Slave_IO_Running: Connecting
 Slave_SQL_Running: Yes
 ·········略 

10,master 服務增刪改數據

11, 查看 slave 服務是否同步,失敗!

# 解決錯誤

12,停止并重置 slave 復制線程服務

 mysql -e  stop slave 
 mysql -e  reset slave

 13,配置正確的 change master to 信息

 CHANGE MASTER TO MASTER_HOST= 172.22.7.70 ,
 MASTER_USER= repluser ,
 MASTER_PASSWORD= centos ,
 MASTER_PORT=3306,
 MASTER_LOG_FILE= mysql-bin.000002 ,
 MASTER_LOG_POS=245;

14,查看 slave 狀態  

show slave status\G;
 Slave_IO_State: Waiting for master to send event
 Master_Host: 172.22.7.70
 Master_User: repluser
 Master_Port: 3306
 Connect_Retry: 10
 Master_Log_File: mysql-bin.000002
 Read_Master_Log_Pos: 7382
 Relay_Log_File: ct7m1-relay-bin.000002
 Relay_Log_Pos: 540
 Relay_Master_Log_File: mysql-bin.000002
 Slave_IO_Running: Yes
 Slave_SQL_Running: No

15,發現 slave 狀態中 Slave_SQL_Running: No,執行下面命令更為為 YES

 MariaDB [(none)]  stop slave;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]  set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]  start slave;
Query OK, 0 rows affected (0.03 sec)
MariaDB [(none)]  show slave status\G;
*************************** 1. row ***************************
 Slave_IO_State: Waiting for master to send event
 Master_Host: 172.22.7.70
 Master_User: repluser
 Master_Port: 3306
 Connect_Retry: 10
 Master_Log_File: mysql-bin.000002
 Read_Master_Log_Pos: 7382
 Relay_Log_File: ct7m1-relay-bin.000003
 Relay_Log_Pos: 540
 Relay_Master_Log_File: mysql-bin.000002
 Slave_IO_Running: Yes
 Slave_SQL_Running: Yes
 ·········略 

16,查看 slave 服務數據是否同步

17,同步完成。

Mysql 級聯復制

在生產換進中有一種主從復制的方法主節點先將數據同步到一個中間的從節點,然后由從節點給后續的其他從節點來復制數據,這種復制方式稱為級聯復制。

級聯復制的好處是可以極大的減輕主節點的壓力

級聯復制在配置時需要在中間節點上啟用 log_slave_updates 的選項。

# 環境
  服務器  master slave slave
  系統  centos7 centos7 centos7
 ip 172.22.7.70 172.22.7.70 172.22.7.71

#mater

1,主服務器啟用二進制日志,并更改二進制目錄

 vim /etc/my.cnf
 log_bin=/data/bin/mysql-bin
 binlog-format=row
 server-id=1(主從服務器必需保證不同)

更改目錄見上面

2,重啟服務

service mysql restart

3, 創建一個賬戶用來復制數據的賬戶  

mysql -e  GRANT REPLICATION SLAVE ON *.* TO  repluser @ 172.22.7.%  IDENTIFIED BY  centos

4,查看主服務器正在使用的二進制日志

 mysql -e  show master logs; 
 +------------------+-----------+
 | Log_name | File_size |
 +------------------+-----------+
 | mysql-bin.000001 | 264 |
 | mysql-bin.000002 | 7488 |
 | mysql-bin.000003 | 402 |
 +------------------+-----------+
 
#slave

5,修改配置文件, 并創建二進制日志目錄

 vim /etc/my.cnf
 [mysqld]
 log-bin=/data/bin/mysql-bin
 binlog-format=row
 read-only
 log_slave_updates
 server-id=2

更改目錄見上

6,啟動服務

 systemctl restart mariadb

7,配置 change master to 信息

 CHANGE MASTER TO MASTER_HOST= 172.22.7.70 ,MASTER_USER= repluser ,MASTER_PASSWORD= centos ,MASTER_PORT=3306,MASTER_LOG_FILE= mysql-bin.000003 , MASTER_LOG_POS=402;

8,啟動 slave 線程

 mysql -e  start slave

9,查看 slave 狀態

 show slave status\G;
 *************************** 1. row ***************************
 Slave_IO_State: Waiting for master to send event
 Master_Host: 172.22.7.70
 Master_User: repluser
 Master_Port: 3306
 Connect_Retry: 60
 Master_Log_File: mysql-bin.000003
 Read_Master_Log_Pos: 7539
 Relay_Log_File: ct7m1-relay-bin.000002
 Relay_Log_Pos: 7677
 Relay_Master_Log_File: mysql-bin.000003
 Slave_IO_Running: Yes
 Slave_SQL_Running: Yes
 Replicate_Do_DB:

10,在 master 上增刪改數據測試查看

#slave1

11,在 slave 上將 slave 上的數據拷貝過來

 mysqldump -A --single-transaction -F --master-data=1   /data/all.sql
 scp /data/all.sql 172.22.7.72:/data

12,slave 創建一個賬戶用來復制數據的賬戶

 mysql -e  GRANT REPLICATION SLAVE ON *.* TO  repluser @ 172.22.7.%  IDENTIFIED BY  centos

13,修改 slave1 配置

 vim /etc/my.cnf
 [mysqld]
 read-only
 server-id=3

14,啟動服務

 systemctl start mariadb

15,查看 slave 服務器的二進制日志

 mysql -e  show master logs 
 +------------------+-----------+
 | Log_name | File_size |
 +------------------+-----------+
 | mysql-bin.000001 | 351 |
 | mysql-bin.000002 | 351 |
 | mysql-bin.000003 | 351 |
 | mysql-bin.000004 | 25552 |
 | mysql-bin.000005 | 586 |
 +------------------+-----------+

16,打開 all.sql 文件對 change master on 信息加以修改
 

 CHANGE MASTER TO MASTER_HOST= 172.22.7.71 ,MASTER_USER= repluser ,MASTER _PASSWORD= centos ,MASTER_PORT=3306,MASTER_LOG_FILE= mysql-bin.000005 , MASTER_LOG_POS=586;

17,導入 slave 數據

mysql   /data/all.sql

18,啟動線程

 mysql -e  START SLAVE;

19,查看 slave 狀態

mysql -e  show slave status\G; 

20, 對 master 對象增刪改操作,查看是否同步

21,同步完成。

MySQL 半同步

異步復制是當用戶寫入一條記錄時,先將數據寫入到主節點,然后回復用戶一個寫入成功的消息,然后慢慢的將數據復制到其背后的其他從節點,這樣的好處是效率比較高,但是缺點也是非常明顯,主服務器和從服務器的延遲過大并且主服務器突然發生異常,此時就會造成數據的丟失。

同步復制是當用戶寫入一條記錄時,主節點將數據寫入數據庫,然后將數據復制給其后面的其他從節點,當所有的從節點返回數據復制成功后,主節點再回復用戶數據接入成功的消息,這樣做的好處是,確保了數據的安全性,但損失了效率。

半同步復制是間于同步復制和異步復制之間的一種復制方法,他的工作原理是:當用戶執行寫操作時,主節點會將數據發送給其后面的其他從節點,只要有一個從節點返回復制成功的消息,主節點就直接返回寫入成功,如果主節點背后的從節點遲遲不返回復制成功消息,此時就會有一個超時時長,一旦達到超時時長,主節點就先返回消息告訴用戶復制成功,而后將數據繼續給從節點復制。

# 配置主從復制   步驟見上。

# 配置半同步

##master

1,修改配置文件啟用插件

 vim /etc/my.cnf
 [mysqld]
 log-bin=/data/bin/mariadb-bin
 binlog-format=row
 server-id=1
 rpl_semi_sync_master_enabled

2, 重啟服務,

 systemctl restart mariadb

3,查看插件是否啟動  

 SHOW GLOBAL VARIABLES LIKE  %semi% 
 +------------------------------------+-------+
 | Variable_name | Value |
 +------------------------------------+-------+
 | rpl_semi_sync_master_enabled | ON |
 | rpl_semi_sync_master_timeout | 3000 |
 | rpl_semi_sync_master_trace_level | 32 |
 | rpl_semi_sync_master_wait_no_slave | ON |
 +------------------------------------+-------+
 4 rows in set (0.00 sec)

4,設置超時時長

 SET GLOBAL rpl_semi_sync_master_timeout=3000;
 Query OK, 0 rows affected (0.00 sec)

##slave

5,修改配置文件啟用插件

 vim /etc/my.cnf
 [mysqld]
 log-bin=/data/bin/mariadb-bin
 binlog-format=row
 server-id=2
 rpl_semi_sync_master_enabled

6, 重啟服務,

systemctl restart mariadb

7,查看插件是否啟動  

 SHOW GLOBAL VARIABLES LIKE  %semi% 
 +------------------------------------+--------------+
 | Variable_name | Value |
 +------------------------------------+--------------+
 | rpl_semi_sync_master_enabled | ON |
 | rpl_semi_sync_master_timeout | 1000 |
 | rpl_semi_sync_master_trace_level | 32 |
 | rpl_semi_sync_master_wait_no_slave | ON |
 | rpl_semi_sync_master_wait_point | AFTER_COMMIT |
 +------------------------------------+--------------+
 5 rows in set (0.00 sec)

8, 啟動復制線程

mysql -e  START SLAVE

9,測試檢查

10,同步完成

“MYSQL 完全備份、主從復制、級聯復制、半同步的知識點總結”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-28發表,共計9740字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 桐城市| 阳曲县| 平昌县| 石泉县| 胶州市| 邢台市| 六安市| 勃利县| 边坝县| 西平县| 云霄县| 阿荣旗| 云安县| 铁岭县| 和硕县| 平度市| 常德市| 西盟| 龙泉市| 凭祥市| 聂拉木县| 建平县| 江阴市| 峡江县| 栖霞市| 新野县| 南乐县| 商水县| 浮梁县| 安泽县| 镇沅| 扎囊县| 信阳市| 南丰县| 河西区| 哈密市| 商河县| 宜君县| 松溪县| 丰都县| 罗源县|