mysql8基于binary log的主從復制實踐

主從架構介紹

mysql自帶的副本機制允許從一個mysql數(shù)據(jù)庫(稱之為主或者源庫)復制一個或多個mysql數(shù)據(jù)庫(稱之為從或者副本庫)。副本機制默認情況下是異步進行的伯病,不需要永久連接從源庫接收更新。副本機制作用的范圍可以為所有數(shù)據(jù)庫否过,選定的數(shù)據(jù)庫或者選定的表午笛。

MySQL 8.0支持不同的兩種復制方法:

1)基于從源庫的二進制日志(binary log)復制事件實現(xiàn)惭蟋,并要求在源庫和副本庫之間同步日志文件和日志文件中的位置,異步實現(xiàn)药磺,不具有事務性告组。

mysql-replication-based-on-binary-log.png

2)基于全局事務標識符(GTIDs)實現(xiàn),具有事務性癌佩,因此不需要處理日志文件及其位置木缝,這極大地簡化了許多常見的復制任務。只要在源庫上提交的所有事務也應用于副本庫上围辙,使用GTIDs的復制就可以保證源和副本之間的一致性我碟。

主從架構優(yōu)點

  • 可以實現(xiàn)讀寫分離架構,對主庫進行寫酌畜,對從庫進行讀怎囚,可以工作負載到副本庫進而提高整體性能。
  • 可以保障數(shù)據(jù)安全桥胞,因為副本可以暫停復制過程恳守,所以可以在副本上運行備份服務,而不會損壞相應的源數(shù)據(jù)贩虾。
  • 可以實現(xiàn)數(shù)據(jù)的備份催烘,實現(xiàn)容災

基于binary log的主從架構實踐

主庫設置

首先在在 MySQL 中增加一個可以進行主從復制權限的用戶。在 mysql 交互環(huán)境中執(zhí)行如下命令

# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.13 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create user 'repl'@'10.20.131.38' identified by 'Inspur123!@#';
Query OK, 0 rows affected (0.07 sec)

mysql> grant replication slave on *.* to 'repl'@'10.20.131.38';
Query OK, 0 rows affected (0.05 sec)

mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000001 |     2324 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

mysql> 

命令**show master status **獲取到當前歸檔日志的名字和位置缎罢,后面從服務器設置主從復制的時候需要從這個位置開始伊群。

從庫設置

# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.13 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> change master to                 
    -> master_host='10.20.131.37',      
    -> master_port=3306,                
    -> master_user='repl',              
    -> master_password='Test123!@#',  
    -> master_log_file='binlog.000001', 
    -> master_log_pos=2324;             
Query OK, 0 rows affected, 2 warnings (0.07 sec)

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

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.20.131.37
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: binlog.000001
          Read_Master_Log_Pos: 2324
               Relay_Log_File: h10p20p131p38-relay-bin.000002
                Relay_Log_Pos: 319
        Relay_Master_Log_File: binlog.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 2324
              Relay_Log_Space: 535
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 37
                  Master_UUID: 109ae7ea-1d7c-11eb-980d-48f97cff3ddf
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
       Master_public_key_path: 
        Get_master_public_key: 0
1 row in set (0.00 sec)

ERROR: 
No query specified

Slave_IO_State 的值為 Waiting for master to send event ,表示已經(jīng)準備好接受主庫發(fā)送過來的歸檔日志進行處理了策精。

測試主從復制

主庫建立名字為test的database舰始,如下:

mysql> create database test default character set utf8;  
Query OK, 1 row affected, 1 warning (0.03 sec)

從庫確認是否已經(jīng)同步備份,如下:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)

mysql> 

根據(jù)以上輸出咽袜,可以確認主從復制已經(jīng)生效丸卷。

參照

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市询刹,隨后出現(xiàn)的幾起案子谜嫉,更是在濱河造成了極大的恐慌,老刑警劉巖凹联,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沐兰,死亡現(xiàn)場離奇詭異,居然都是意外死亡蔽挠,警方通過查閱死者的電腦和手機住闯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人寞秃,你說我怎么就攤上這事斟叼。” “怎么了春寿?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵朗涩,是天一觀的道長。 經(jīng)常有香客問我绑改,道長谢床,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任厘线,我火速辦了婚禮识腿,結果婚禮上,老公的妹妹穿的比我還像新娘造壮。我一直安慰自己渡讼,他們只是感情好,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布耳璧。 她就那樣靜靜地躺著成箫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旨枯。 梳的紋絲不亂的頭發(fā)上蹬昌,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機與錄音攀隔,去河邊找鬼皂贩。 笑死,一個胖子當著我的面吹牛昆汹,可吹牛的內(nèi)容都是我干的明刷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼满粗,長吁一口氣:“原來是場噩夢啊……” “哼遮精!你這毒婦竟也來了?” 一聲冷哼從身側響起败潦,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎准脂,沒想到半個月后劫扒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡狸膏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年沟饥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡贤旷,死狀恐怖广料,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情幼驶,我是刑警寧澤艾杏,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站盅藻,受9級特大地震影響购桑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜氏淑,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一勃蜘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧假残,春花似錦缭贡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至耗帕,卻和暖如春穆端,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仿便。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工体啰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嗽仪。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓荒勇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親闻坚。 傳聞我的和親對象是個殘疾皇子沽翔,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355