<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        MYSQL完全備份、主從復制、級聯復制、半同步小結

        來源:懂視網 責編:小采 時間:2020-11-09 21:14:47
        文檔

        MYSQL完全備份、主從復制、級聯復制、半同步小結

        MYSQL完全備份、主從復制、級聯復制、半同步小結:mysql 完全備份 1,啟用二進制日志,并于數據庫分離,單獨存放 vim /etc/my.cnf 添加 log_bin=/data/bin/mysql-bin 創建/data/bin文件夾并授權 chown mysql.mysql /data/bin 2,完成備份數據庫 mysqldump -A
        推薦度:
        導讀MYSQL完全備份、主從復制、級聯復制、半同步小結:mysql 完全備份 1,啟用二進制日志,并于數據庫分離,單獨存放 vim /etc/my.cnf 添加 log_bin=/data/bin/mysql-bin 創建/data/bin文件夾并授權 chown mysql.mysql /data/bin 2,完成備份數據庫 mysqldump -A

        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,同步完成

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MYSQL完全備份、主從復制、級聯復制、半同步小結

        MYSQL完全備份、主從復制、級聯復制、半同步小結:mysql 完全備份 1,啟用二進制日志,并于數據庫分離,單獨存放 vim /etc/my.cnf 添加 log_bin=/data/bin/mysql-bin 創建/data/bin文件夾并授權 chown mysql.mysql /data/bin 2,完成備份數據庫 mysqldump -A
        推薦度:
        標簽: 備份 同步 mysql
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲黄色免费电影| 亚洲AV无码成人精品区狼人影院 | 全部一级一级毛片免费看| 成年私人影院免费视频网站| 亚洲人成网站看在线播放| 99久久久精品免费观看国产| 亚洲最大成人网色| 国产成人精品免费午夜app| 亚洲欧洲精品视频在线观看| 青青青国产在线观看免费| 亚洲中文字幕无码久久2020| 日韩免费福利视频| 男女啪啪免费体验区| 中文字幕亚洲乱码熟女一区二区| 两个人看的www免费| 亚洲欧洲在线观看| 免费国产黄线在线观看| 国产精品久久久久久亚洲影视| 四虎精品亚洲一区二区三区| 国产精品免费久久久久电影网| 国产亚洲一区二区手机在线观看 | 国产精品hd免费观看| 亚洲av午夜福利精品一区 | 青青青视频免费观看| 夜夜春亚洲嫩草影院| 日本免费大黄在线观看| 亚洲av乱码一区二区三区香蕉| 国产精品免费综合一区视频| 精精国产www视频在线观看免费| 精品亚洲A∨无码一区二区三区| 毛片免费在线播放| 国产免费福利体检区久久| 亚洲成a人片在线观看中文!!!| 日本最新免费不卡二区在线| 巨胸喷奶水视频www免费视频| 亚洲校园春色小说| 亚洲国产av一区二区三区| 久章草在线精品视频免费观看| 亚洲国产综合AV在线观看| 亚洲日韩精品一区二区三区 | 999国内精品永久免费观看|