1. 程式人生 > >MySQL5.7 快速批量處理 slave從庫 Last_Errno: 1062問題

MySQL5.7 快速批量處理 slave從庫 Last_Errno: 1062問題

運營同事說生成環境的Mysql連線報錯處理:Can’t read dir of ’./business_db/’ (errno:13 – Permission denied)

 

上去伺服器,檢視到原因是,mysql執行過程中,mysql資料存放目錄的許可權被修改成了其它帳號mongo,所以通過遠端查詢報錯,解決辦法是重新賦予mysql帳號許可權,chown  -R mysql:mysql/data/mysql,然後再重啟mysql(重啟過程中,如果正常restart無效,則需要kill 程序號的方式去stop 然後再start)。

重啟mysql過後的slave報錯問題,如下所示:

[[email protected]

_dbm1_s1 ~]# mysql -e "show slave status\G"

*************************** 1. row ***************************

               Slave_IO_State: Queueing master event to the relay log

                  Master_Host: 101.24.3.61

                  Master_User: repl

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-bin.001603

          Read_Master_Log_Pos: 72081748

               Relay_Log_File: mysql-relay-bin.003111

                Relay_Log_Pos: 221898

        Relay_Master_Log_File: mysql-bin.001582

             Slave_IO_Running: Yes

            Slave_SQL_Running: No

              Replicate_Do_DB:

          Replicate_Ignore_DB:

           Replicate_Do_Table:

       Replicate_Ignore_Table:

      Replicate_Wild_Do_Table:

  Replicate_Wild_Ignore_Table:

                   Last_Errno: 1062

                   Last_Error: Could not execute Write_rows event on table business_db.MOVIE_INTERFACE_LOG; Duplicate entry '791212' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.001582, end_log_pos 176650062

                 Skip_Counter: 0

          Exec_Master_Log_Pos: 176641719

              Relay_Log_Space: 13274783505

              Until_Condition: None

………………

判斷是因為,mysql的資料庫目錄/data/mysql已經被賦予了mongo使用者許可權,mysql無法寫入,所以在slave裡面沒有記錄。但是mysql啟動是在root登入通過 service mysql start啟動起來的,所以實際上資料已經通過root啟動的mysql服務寫進資料庫了,所以在恢復slave的時候,slavesql執行緒依然去執行relay日誌,產生了Duplicateentry的問題了。

不知道這個判斷是否屬實?

批量處理Last_SQL_Errno 1062錯誤

那麼接下來就需要通過

stop slave; setglobal sql_slave_skip_counter=1; start slave;來跳過,但是Duplicate entry的資料太多了,手工執行不過來,需要寫一個shell指令碼while迴圈來自動跳過,指令碼如下:

empty[[email protected]_dbm1_s1 scripts]# more slave_1062_stop.sh 
#/bin/bash
slave_num=`mysql -e "show slave status\G" |grep Last_SQL_Errno |awk {'print $2}'`
echo $slave_num
while [[ $slave_num = "1062" ]];
do
	mysql -e "stop slave; set global sql_slave_skip_counter=1; start slave;"
	slave_num=`mysql -e "show slave status\G" |grep Last_SQL_Errno |awk {'print $2}'`
done
[[email protected]_dbm1_s1 scripts]#

[[email protected]_dbm1_s1 scripts]# more slave_1062_stop.sh

#/bin/bash

slave_num=`mysql -e "show slave status\G" |grep Last_SQL_Errno |awk {'print $2}'`

echo $slave_num

while [[ $slave_num = "1062" ]];

do

         mysql -e "stop slave; set global sql_slave_skip_counter=1; start slave;"

         slave_num=`mysql -e "show slave status\G" |grep Last_SQL_Errno |awk {'print $2}'`

done

[[email protected]_dbm1_s1 scripts]#

然後執行指令碼,如下:

# 開始執行指令碼,等待

[[email protected]_dbm1_s1 scripts]# sh slave_1062_stop.sh

1062

[[email protected]_dbm1_s1 scripts]#

[[email protected]_dbm1_s1 scripts]#

# 執行結束後,再執行下,確認Last_SQL_Errno是否正常值0

[[email protected]_dbm1_s1 scripts]# sh slave_1062_stop.sh

0

[[email protected]_dbm1_s1 scripts]#

用指令碼自動化執行,比手動在命令列執行stop slave; set globalsql_slave_skip_counter=1; start slave;要方便很多。

最後用checksum檢查主從資料一致性:

# 下載安裝percona-toolkit

tar -xvf percona-toolkit_2.2.17-1.tar.gz

cd percona-toolkit-2.2.17/

yum install perl-DBD-MySQL -y

perl Makefile.PL

make

make test

make install

cp /usr/local/bin/pt* /bin/

# 開始check主從資料一致性

pt-table-checksum --nocheck-replication-filters --replicate=test.dsns --host=101.24.3.61 --port 3306 --databases=business_db -urepl [email protected]   --no-check-binlog-format  --no-replicate-check

相關推薦

MySQL5.7 快速批量處理 slave Last_Errno: 1062問題

運營同事說生成環境的Mysql連線報錯處理:Can’t read dir of ’./business_db/’ (errno:13 – Permission denied) 上去伺服器,檢視到原因是,mysql執行過程中,mysql資料存放目錄的許可權被修改成了其它帳號mo

框架綜合實踐(7)--批量處理命令(命令執行指令碼)

目的 自動化指令碼開發階段,我們會使用工具pycharm IDE來編輯執行指令碼,但是指令碼開發完成後,每次執行指令碼都要開啟工具就會變得很麻煩,而且pycharm IDE比較消耗資源,影響執行效率,這種情況下,我們可以使用cmd命令或者將cmd命令封裝為bat批處理指令碼來執行。 裝置連線

centos mysql5.7.24 多主多叢集搭建

系統 [[email protected] ~]# uname -a Linux i-ec0m1585 3.10.0-327.4.5.el7.x86_64 #1 SMP Mon Jan 25 22:07:14 UTC 2016 x86_64 x86_64 x86_64 G

azure 雲上MySQL最新版本 MySQL5 7 11 批量自動化一鍵式安裝

#1 instal jdk , add tomcat user                                                                                 sh init_jdk.sh    useradd tomcat  mkdir -p

本地Mysql5.7主從(Master/Slave)安裝詳解,my.ini檔案配置

找到Master mysql的位置 C:\Program Files\MySQL\MySQL Server 5.7 複製資料夾到你所需要的目錄,我是在D:\Mysql separation\MySQL

主從復制中Last_SQL_Errno: 1062 錯誤

更正解決辦法:修改從庫的mysql的配置文件,/etc/my.cnf,在[mysqld]下面添加一行slave_skip_errors = 1062:wq然後重啟mysql服務本文出自 “運維之路” 博客,請務必保留此出處http://jxlwc.blog.51cto.com/5250102/1977743主

mysql5.7 遷移以及提升為主

mysqlCHANGE MASTER TO MASTER_HOST='10.10.30.34', MASTER_PORT=3306, MASTER_USER='slave', MASTER_PASSWORD='slave', MASTER_LOG_FILE=&

使用MySQL Yum儲存快速在centos安裝mysql5.7

前言 前幾天想在centos上裝一個mysql來模擬mysql伺服器,但是參考網上的很多文章都安裝有些問題,這裡我總結我在centos按章mysql遇到的問題和操作流程。 本文參考mysql官方安裝過程:https://dev.mysql.com/doc/mysql-yum-repo

mysql5.7 yum安裝及主從配置(只讀),不重啟主新增配置

yum -y remove mysql wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm rpm -ivh mysql57-community-release-el7-8.noarch.rpm yum -y ins

Centos6.5 Mysql5.7 多主一 (多臺主機上拉取的資料 合併到同一臺數據

我也是多文件參考,摸著石頭過河,花了不少時間,不過最終是配置成功(在配置的時候如果遇到錯誤,請自己找度娘解決) 以下是轉過來的部分做了修改:尊重原創,原創無價 #### 解決思路: 1、主資料庫使用Innodb引擎,並設定sql_mode為 NO_AUTO_CREATE_USER 2、從

CentOS7安裝MySQL5.7數據以及配置

oracle 數據庫 固態硬盤 c語言 最大的 一、MySQL5.7主要特性: 原生架構支持centos7的Systemd (1.)更好的性能:對於多核的CPU、固態硬盤、鎖有著更好的優化、更好的innoDB存儲引擎。 (2.)更為健壯的復制功能:復制帶來了數據完全不丟失的方案,傳

mysql5.7主從(Master/Slave)同步配置

server 5.7 test 設置 format slave mct 關閉 忽略 環境: mysql版本都是5.7(以前的版本配置可能不一樣) 主(Master) windows:192.168.0.68 從(Slave) centos7:192.168.0.4 基本

騰訊雲數據團隊:MySQL5.7 JSON實現簡單介紹

literal 白色 一定的 round tween extra inf features 操作性 作者介紹:吳雙橋 騰訊雲project師 閱讀原文。很多其它技術幹貨。請訪問fromSource=gwzcw.57435.57435.57

Mysql5.7多源復制,過濾復制一段時間後增加復制一個的實現方法

ble sta 增加 replicate 修改 html 並且 table convert 多源復制如果是整個實例級別的復制,那不存在下面描述的情況。 如果是對其中一個或多個主實例都是過濾復制,並且運行一段時間後,想在這個源上再增加一個庫怎麽實現? 主1:192.168

mysql5.7 innodb數據備份工具Xtrabackup的安裝

linux xtrabackup mysql5.7 innodb數據庫備份工具Xtrabackup的安裝 wget mhttps://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.7/binary/redhat/6/x86_6

mysql5.7安裝以及數據庫主遷移

遷移筆者下午趟了一下午的水rpm -qa mariadb*yum remove mariadb-libs-5.5.56-2.el7.x86_64-yrpm -ivh mysql-community-common-5.7.9-1.el7.x86_64.rpmrpm -ivh mysql-communit

Ubuntu mysql5.7 root用戶看不到數據

mysql root ubuntu 做了一些privilege相關的操作,root用戶突然找不到系統的數據庫了,失去了root用戶的權限,找了好久才解決:關閉數據庫sudo /etc/init.d/mysql stop啟動安全模式數據庫mysqld_safe --skip-grant-tables

Mysql5.7在CentOs環境下定時備份數據

習慣性 ron 執行 創建 www style logs shell test 咱創建一個目錄,專門用於存放Mysql的備份文件。/data/mysql_bak。寫個shell腳本,每分鐘備份一次測試以下。 腳本代碼: chmod 755 /testdir/backup

MysqL5.7在使用mysqldump命令備份數據報錯:mysqldump: [Warning] Using a password on the command line interface can be insecure.

導出 interface password spm 可能 tmp efm extra tps 在阿裏雲服務器增加一個shell腳本定時備份數據庫腳本執行任務時,測試性的執行了備份命令,如下 [root@iZ2ze503xw2q1fftv5rhboZ mysql_bak

mysql5.7基礎 limit 第二條開始取三條數據

珍惜 div 自己的 mys set name window col 關系 禮悟:   公恒學思合行悟,尊師重道存感恩。葉見尋根三返一,江河湖海同一體。 虛懷若谷良心主,願行無悔給最苦。讀書鍛煉養身心,誠勸且行且珍惜。   數據、數據,命根就