天天日夜夜添_精品国产99久久久久久人裸体 _成人app在线观看_日韩色网站

新聞資訊

    將數(shù)據(jù)庫回檔至指定時間點或位置,常常是使用全量備份+增量實現(xiàn)的。

    而數(shù)據(jù)量很大的情況下,增量恢復(fù)一直是一個苦惱的問題。

    因為恢復(fù)速度十分慢,并且容易出錯。

    p.s. 以下所有框可左右滑動

    建議橫屏閱讀

    常見增量恢復(fù)方式

    先解析成sql文件,再導(dǎo)入MySQL

    1mysqlbinlog mysql-bin.000001 --start-position=n > /data/add.sql
    2mysqlbinlog mysql-bin.000002 ... mysql-bin.n >> /data/add.sql
    3mysql -u -p -S < /data/add.sql

    直接管道到MySQL中

    1mysqlbinlog mysql-bin.000001 --start-position=n | mysql -u -p -S
    2mysqlbinlog mysql-bin.000002 ... mysql-bin.n | mysql -u -p -S

    直接管道進(jìn)去的方式,并不一定安全,手冊上也有指明:

    mysql 批量還原數(shù)據(jù)庫_mysql批量導(dǎo)入excel數(shù)據(jù)_mysql存儲過程批量插入數(shù)據(jù)

    1If you have more than one binary log to execute on the MySQL server,
    2the safe method is to process them all using a single connection to the server.

    關(guān)于這種方式的更多內(nèi)容,可以參考:

    然而這兩種方式原理都是一樣的,通過解析成sql并導(dǎo)入到MySQL中。

    缺點:

    因為和本質(zhì)實際上是一個東西

    所以是否可以利用MySQL自身的來增量呢?

    通過恢復(fù)

    這里只介紹核心部分,即偽裝成的過程。

    ① 將relay log info的改到file中,并生成這個文件。(itor寫到配置文件中)

    1SET GLOBAL relay_log_info_repository='FILE';
    2CHANGE MASTER TO master_host='1', master_password='1', master_user='1', master_log_file='1', master_log_pos=4;

    mysql 批量還原數(shù)據(jù)庫_mysql批量導(dǎo)入excel數(shù)據(jù)_mysql存儲過程批量插入數(shù)據(jù)

    通過命令,是為了告訴MySQL自己為一個slave實例,因為無需用到mysql 批量還原數(shù)據(jù)庫,故host,,user等可以隨意填寫。

    并且通過該步驟,生成文件。

    ② 關(guān)閉實例,將需要增量的文件偽裝成。

    1cp mysql-bin.000003 mysql-bin.000004 mysql-bin.000005 mysql-bin.000006 mysql-bin.000007 mysql-bin.000008 mysql-bin.000009 mysql-bin.000010 $relaylogdir
    2cd $relaylogdir
    3rename mysql-bin. mysql-relay. mysql-bin.0000*
    4chown mysql:mysql -R .

    通過cp命令將移動到$里,該變量取決于實例的選項參數(shù),默認(rèn)放在下。

    再將批量改名成mysql 批量還原數(shù)據(jù)庫,并且給予對應(yīng)的權(quán)限,否則會報錯OS error code 13: 。

    ③ 修改文件和relay-log.index文件

    將的第二三行改成需要執(zhí)行的第一個(現(xiàn)在是)的文件名和:

    1/data/mysql57/relaylog/mysql-relay.000003
    21276895

    第二三行對應(yīng)和,等同于:

    mysql 批量還原數(shù)據(jù)庫_mysql存儲過程批量插入數(shù)據(jù)_mysql批量導(dǎo)入excel數(shù)據(jù)

    1mysqlbinlog mysql-relay.000003 --start-position=1276895 | mysql -u -p -S

    修改該文件是為了告訴從哪一個file和哪一個開始執(zhí)行。

    再修改relay-log.index,清空原有信息,添加以下信息,為的是告訴還有哪些是需要執(zhí)行的。

    1/data/mysql57/relaylog/mysql-relay.000003
    2/data/mysql57/relaylog/mysql-relay.000004
    3/data/mysql57/relaylog/mysql-relay.000005
    4/data/mysql57/relaylog/mysql-relay.000006
    5/data/mysql57/relaylog/mysql-relay.000007
    6/data/mysql57/relaylog/mysql-relay.000008
    7/data/mysql57/relaylog/mysql-relay.000009
    8/data/mysql57/relaylog/mysql-relay.000010

    ④ 啟動實例,開啟:

    1START SLAVE sql_thread ;

    ⑤ 檢查復(fù)制狀態(tài):

     1mysql> SHOW SLAVE STATUS\G
    2*************************** 1. row ***************************
    3Slave_IO_State:
    4Master_Host: 1
    5Master_User: 1
    6Master_Port: 3306
    7Connect_Retry: 60
    8Master_Log_File: 1
    9Read_Master_Log_Pos: 4
    10Relay_Log_File: mysql-relay.000003 ? ?-- 已經(jīng)執(zhí)行到的日志名
    11Relay_Log_Pos: 11529982 ? ? ? ?-- 已經(jīng)執(zhí)行到日志的位置
    12Relay_Master_Log_File: 1
    13Slave_IO_Running: No
    14Slave_SQL_Running: Yes
    15Replicate_Do_DB:
    16Replicate_Ignore_DB:
    17Replicate_Do_Table:
    18Replicate_Ignore_Table:
    19Replicate_Wild_Do_Table:
    20Replicate_Wild_Ignore_Table:
    21Last_Errno: 0
    22Last_Error:
    23Skip_Counter: 0
    24Exec_Master_Log_Pos: 11529982
    25Relay_Log_Space: 5347038913
    26Until_Condition: None
    27Until_Log_File:
    28Until_Log_Pos: 0
    29Master_SSL_Allowed: No
    30Master_SSL_CA_File:
    31Master_SSL_CA_Path:
    32Master_SSL_Cert:
    33Master_SSL_Cipher:
    34Master_SSL_Key:
    35Seconds_Behind_Master: 274354 ? ? ? ?-- 若變?yōu)?,則表示已經(jīng)增量完畢
    36Master_SSL_Verify_Server_Cert: No
    37Last_IO_Errno: 0
    38Last_IO_Error:
    39Last_SQL_Errno: 0
    40Last_SQL_Error:
    41Replicate_Ignore_Server_Ids:
    42Master_Server_Id: 0
    43Master_UUID:
    44Master_Info_File: /data/mysql57/master.info
    45SQL_Delay: 0
    46SQL_Remaining_Delay: NULL
    47Slave_SQL_Running_State: Reading event from the relay log
    48Master_Retry_Count: 86400
    49………………………………

    至此,已經(jīng)可以通過來增量恢復(fù)了。

    當(dāng)然,上述過程只針對于指定--start-的方式來恢復(fù),比如單點MySQL實例在y=6還無法啟動的情況下,就需要通過最近一次可用的全量備份+剩下的恢復(fù)。

    mysql 批量還原數(shù)據(jù)庫_mysql存儲過程批量插入數(shù)據(jù)_mysql批量導(dǎo)入excel數(shù)據(jù)

    該測試使用的版本為:MySQL 5.7.16

    效果:

    快速恢復(fù)到指定位置點,即通過全備文件+恢復(fù)到故障前的最后一個。

    針對--stop-

    比如在某一時刻執(zhí)行了錯誤的sql,如等操作,同樣也可以通過該辦法。

    但與指定--start-的方法有些許不同:

    只需要將START SLAVE 后添加一個UNTIL = '', = 即可。

    該選項用于控制執(zhí)行到的最后的,類似于 mysql-bin.n --stop-=$ 。

    當(dāng)然,這種數(shù)據(jù)回檔操作,也可以考慮帶有功能的工具。

    性能對比

    mysql批量導(dǎo)入excel數(shù)據(jù)_mysql存儲過程批量插入數(shù)據(jù)_mysql 批量還原數(shù)據(jù)庫

    對于同一組文件增量:

    通過解析+導(dǎo)入的時間為69min。

    而通過的執(zhí)行時間為41min。

    并且在需要增量的文件越大的情況下,效果越明顯。

    總結(jié)

    --start-與通過修改的第三行等效:

    用途都是指定開始執(zhí)行的第一個。

    --stop-與通過在啟動時指定UNTIL = '', = 等效:

    用途都是指定結(jié)束執(zhí)行的最后一個。

    全文完。

    Enjoy MySQL :)

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有