<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 一、中控安裝后應該進行的調整 調整數據庫管理員密碼為強密碼,開啟binlog,做好數據庫備份。 ## 1、更新數據庫管理員密碼為強密碼 ~~~undefined # 1、進入mysql容器 docker exec -it mysql bash # 2、更新root密碼 mysql -uroot -ptest1234 MySQL> alter user 'root'@'localhost' IDENTIFIED BY 'CofcoRpa@12345!#.'; MySQL> alter user 'root'@'%' IDENTIFIED BY 'CofcoRpa@12345!#.'; MySQL> flush privileges; ~~~ ## 2、開啟log-bin記錄數據庫操作日志 5.7.x版本需要在配置文件添加參數,8.0.x版本默認開啟log-bin ~~~undefined # 1、更新mysql配置文件開啟log-bin日志 cat >> /data/cyclone/rpaplatform/data/middleware/mysql-conf/mysql.cnf <<EOFlog-bin=/var/lib/mysql/mysql-binlog log-error=/var/lib/mysql/error.logEOF # 2、重啟mysql容器生效log-bin參數 docker restart mysql # 3、查看log-bin是否生效 MySQL> show global variables like 'log_bin%'; +---------------------------------+-----------------------------------+ | Variable_name | Value | +---------------------------------+-----------------------------------+ | log_bin | ON | | log_bin_basename | /var/lib/mysql/mysql-binlog | | log_bin_index | /var/lib/mysql/mysql-binlog.index | | log_bin_trust_function_creators | OFF | | log_bin_use_v1_row_events | OFF | +---------------------------------+-----------------------------------+ ~~~ ## 3、定期全量備份及自動刪除7天前備份文件 ~~~undefined # mysqldump參數 --master-data =1 會把CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=1275;打印出來 =2 會把CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=1275;打印出來且注釋 使用該參數會打開--lock-all-tables,鎖定所有表,需要結合--single-transaction一起使用,會自動關閉--lock-tables --single-transaction 通過在單個事務中轉儲所有表來創建一致的快照。只支持InnoDB,備份時不要使用ALTER TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE,因為一致快照不會隔離這些操作。 --set-gtid-purged 默認值auto =off 如果關閉,則此選項不起任何作用。 =on 如果打開并且服務器上未啟用GTID,則會報錯。開啟GTID,則會輸出以下信息SET @@GLOBAL.GTID_PURGED='4de07665-1923-11ed-8a94-0242ac110002:1-10';到輸出 =auto 如果自動,并且在服務器上啟用了GTID,SET @@GLOBAL.GTID_PURGED被添加到輸出。如果禁用GTID,則自動不執行任何操作。 # 1、創建備份目錄 su - rpa mkdir /data/cyclone/rpaplatform/data/middleware/mysql-bak -p # 2、創建備份腳本 su - rpa vi /data/cyclone/rpaplatform/data/middleware/mysqlbak.sh #!/bin/bash docker exec -it mysql mysqldump -uroot -ppwd --master-data=2 --single-transaction --set-gtid-purged=off -A >/data/cyclone/rpaplatform/data/middleware/mysql-bak/dball-`date +%Y%m%d%H%M%S`.sql find /data/cyclone/rpaplatform/data/middleware/mysql-bak/ -mtime +7 -name "*.sql" -exec rm -rf {} \; chmod +x /data/cyclone/rpaplatform/data/middleware/mysqlbak.sh # 3、每天23:30自動備份全庫數據 su - rpa crontab -e 30 23 * * * sh /data/cyclone/rpaplatform/data/middleware/mysqlbak.sh ~~~ ## ~4、備份binlog~ ~**目前和基礎設置同事溝通,暫不備份binlog。**~ ~~~undefined # 在要備份binlog服務器(192.168.1.1) SQL> grant REPLICATION SLAVE on *.* 'repl'@'192.168.1.2' identified by 'repl'; SQL> flush privileges; # 以下操作都是在備份binlog服務器操作(192.168.1.2) shell> mkdir /data/mysql/backup/binlog shell> cat /data/mysql/scripts/backup_binlog.sh #!/bin/sh #指定mysqlbinlog的位置 BACKUP_BIN=/usr/local/mysql/bin/mysqlbinlog #指定將遠程binlog備份到本地的位置 LOCAL_BACKUP_DIR=/data/mysql/backup/binlog/ #指定備份binlog時的日志 BACKUP_LOG=/data/mysql/backup/binlog/backup.log #指定要備份哪臺binlog的ip REMOTE_HOST=192.168.1.1 REMOTE_PORT=3306 REMOTE_USER=repl REMOTE_PASS=repl FIRST_BINLOG=mysql-bin.000001 #time to wait before reconnecting after failure SLEEP_SECONDS=10 cd ${LOCAL_BACKUP_DIR} ## 運行while循環,連接斷開后等待指定時間,重新連接 while : do if [ `ls -A "${LOCAL_BACKUP_DIR}" |wc -l` -eq 0 ];then LAST_FILE=${FIRST_BINLOG} else LAST_FILE=`ls -l ${LOCAL_BACKUP_DIR} | grep -v backup.log |tail -n 1 |awk '{print $9}'` fi #${BACKUP_BIN} --raw --read-from-remote-server --stop-never --host=${REMOTE_HOST} --port=${REMOTE_PORT} --user=${REMOTE_USER} --password=${REMOTE_PASS} ${LAST_FILE} /usr/local/mysql/bin/mysqlbinlog --raw --read-from-remote-server --stop-never --host=${REMOTE_HOST} --port=${REMOTE_PORT} --user=${REMOTE_USER} --password=${REMOTE_PASS} ${LAST_FILE} echo "`date +"%Y/%m/%d %H:%M:%S"` mysqlbinlog停止,返回代碼:$?" | tee -a ${BACKUP_LOG} echo "${SLEEP_SECONDS}秒后再次連接并繼續備份" | tee -a ${BACKUP_LOG} sleep ${SLEEP_SECONDS} done # 后臺運行該備份腳本 shell> nohup sh /data/mysql/scripts/backup_binlog.sh & ~~~ # 二、比特幣勒索排查 一般都是原本正常的服務,突然不能用了。進入數據庫查看,一般會有一張readme表。 ## 1、查看數據庫內部信息 ~~~undefined # 1、進入mysql容器 docker exec -it mysql bash # 2、查看mysql數據庫信息 mysql -uroot -p MySQL> show databases; MySQL> set names utf8; MySQL> select * from readme; +----+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------+-----------------------+ | id | readme | BTC_address | email | +----+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------+-----------------------+ | 1 | 以下數據庫已被刪除:rpa_cs, rpa_lic, rpa_orc_serv, rpa_orc_trig, rpa_orc_wf。 我們有完整的備份。 要恢復它,您必須向我們的比特幣地址bc1qr6n7hd72lzt0ew27mwlql5nnstgxfa2zhmuf8k支付0.0206比特幣(BTC)。 如果您需要證明,請通過以下電子郵件與我們聯系。 xiao2945@tutanota.com 。 任何與付款無關的郵件都將被忽略! | bc1qr6n7hd72lzt0ew27mwlql5nnstgxfa2zhmuf8k | xiao2945@tutanota.com | +----+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------+-----------------------+ 1 row in set (0.00 sec) ~~~ ## 2、查看數據庫error.log和OS-messages ~~~Plain # 1、查看error.log過濾是否有非內網地址的IP連接到數據庫 vim /data/cyclone/rpaplatform/data/middleware/mysql/error.log # 2、查看操作系統日志在/var/log/最新的messages 是否能找到異常IP登錄服務器信息 # 3、云廠商提供的環境建議由客戶反饋給云廠商進行排查 ~~~ # 三、數據庫被勒索刪除恢復 利用最后一次數據庫全備+log-bin恢復數據,通過error.log和log-bin確認數據庫被刪除的最早時間。 ## 1、利用全量log-bin恢復數據 解析log-bin恢復至刪庫時間點前的數據,需要有全量的log-bin日志。 ~~~undefined # 1、確認要恢復的終點位置即被黑客刪庫的位置 mysqlbinlog -v mysql-bin.000001 | grep -i "drop database testdb"mysqlbinlog -v mysql-bin.000002 | grep -i "drop database testdb"mysqlbinlog -v mysql-bin.000003 | grep -i "drop database testdb"drop database testdb # 解析mysql-bin.000003獲取刪庫的準確位置 mysqlbinlog --no-defaults --base64-output=decode-rows mysql-bin.000003 >./2.sql#220811 16:01:40 server id 13306 end_log_pos 687 GTID last_committed=2 sequence_number=3 rbr_only=noSET @@SESSION.GTID_NEXT= '14f8109c-194b-11ed-9b55-0242ac110002:8'/*!*/;# at 687#220811 16:01:40 server id 13306 end_log_pos 786 Query thread_id=2 exec_time=0 error_code=0SET TIMESTAMP=1660204900/*!*/;drop database testdb刪除數據庫的位置為3號日志文件的687位置,恢復的終點可以設置為:3號日志的687。 # 2、mysqlbinlog常用選項 --start-position=55 起始pos點 --stop-position=555 結束pos點 --start-datetime="2019-11-29 13:00:00" 起始時間點 --stop-datetime="2019-11-29 17:00:00" 結束時間點 --database=douyin 指定只恢復douyin數據庫(一臺主機上往往有多個數據庫,只限本地log日志) --skip-gtids=true 如果是要恢復數據到源數據庫或者和源數據庫有相同GTID信息的實例,那么就要使用--skip-gtids=true參數。如果不帶該參數的話,是無法恢復成功的。因為包含的GTID已經在源數據庫執行過了,根據GTID特性,一個GTID信息在一個數據庫只能執行一次,所以不會恢復成功。 # 3、開始恢復 # 終止日志前文件 mysqlbinlog --no-defaults mysql-bin.000001 mysql-bin.000002 --skip-gtids=true |mysql -uroot -p # 終止日志文件 mysqlbinlog --no-defaults mysql-bin.000003 --stop-position=687 --skip-gtids=true |mysql -uroot -p ~~~ ## 2、基于mysqldump全備和部分log-bin恢復數據 基于最后一次全備,解析log-bin恢復最后一次全備至刪庫時間點的數據。 ~~~undefined # 1、確認mysqldump備份到的最終位置 cat dball.sql |grep "CHANGE MASTER TO MASTER_LOG_FILE" -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1235; 備份到了1號日志的1235位置,恢復的起點可以設置為:1號日志的1235。 # 2、確認要恢復的終點位置即被黑客刪庫的位置 mysqlbinlog -v mysql-bin.000001 | grep -i "drop database testdb" mysqlbinlog -v mysql-bin.000002 | grep -i "drop database testdb" mysqlbinlog -v mysql-bin.000003 | grep -i "drop database testdb" drop database testdb # 解析mysql-bin.000003獲取刪庫的準確位置 mysqlbinlog --no-defaults --base64-output=decode-rows mysql-bin.000003 >./3.sql #220811 16:01:40 server id 13306 end_log_pos 687 GTID last_committed=2 sequence_number=3 rbr_only=no SET @@SESSION.GTID_NEXT= '14f8109c-194b-11ed-9b55-0242ac110002:8'/*!*/; # at 687 #220811 16:01:40 server id 13306 end_log_pos 786 Query thread_id=2 exec_time=0 error_code=0 SET TIMESTAMP=1660204900/*!*/; drop database testdb 刪除數據庫的位置為3號日志文件的687位置,恢復的終點可以設置為:3號日志的687。 # 3、開始全量備份恢復+binlog增量恢復 # 全量恢復 mysql -uroot -pmysql < /var/lib/mysql/dball.sql # binlog增量恢復 # 這里分為3條命令執行,起始日志文件涉及到參數start-position參數,單獨執行;中間的日志文件不涉及到特殊參數,全部一起執行; 中止文件涉及到stop-position參數,單獨執行。 # 起始日志文件 mysqlbinlog --no-defaults mysql-bin.000001 --start-position=1235 --skip-gtids=true |mysql -uroot -p # 中間日志文件 mysqlbinlog --no-defaults mysql-bin.000002 |mysql -uroot -p # 終止日志文件 mysqlbinlog --no-defaults mysql-bin.000003 --stop-position=687 --skip-gtids=true |mysql -uroot -p ~~~ ## 3、總結 ~~~undefined # 1.對于DML操作,binlog記錄了所有的DML數據變化: --對于insert,binlog記錄了insert的行數據 --對于update,binlog記錄了改變前的行數據和改變后的行數據 --對于delete,binlog記錄了刪除前的數據 假如用戶不小心誤執行了DML操作,可以使用mysqlbinlog將數據庫恢復到故障點之前。 # 2.對于DDL操作,binlog只記錄用戶行為,而不記錄行變化,但是并不影響我們將數據庫恢復到故障點之前。 總之,使用mysqldump全備加binlog日志,可以將數據恢復到故障前的任意時刻。 ~~~ # 四、后續調整 ~~~undefined # 1、不要對外網暴露3306端口,或者安裝數據庫時更改數據庫端口 # 2、大權限用戶,host不要設置%,設定內網IP段,或特定IP訪問 # 3、對大權限用戶密碼加固 # 4、做好數據庫備份和binlog日志備份 ~~~ 本文來自博客園,作者:[up~up](https://www.cnblogs.com/soft-engineer/),轉載請注明原文鏈接:[https://www.cnblogs.com/soft-engineer/articles/16596371.html](https://www.cnblogs.com/soft-engineer/articles/16596371.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看