91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL 'In Place' 升級實踐,從5.1到5.7

發布時間:2020-05-25 08:12:09 來源:網絡 閱讀:1717 作者:Amnesiasun 欄目:數據庫

接上篇翻譯的文章:使用'In place' 方法直接從5.0升級至5.7,在此記錄我實踐的過程。

1、環境準備

    數據庫A

    版本:5.1

    字符集:latin1

    引擎:MyISAM

    數據庫量:約220G

    表數據量:約600

    服務器:centos6.5

2、升級過程

已經搭建好5.1版本數據的從庫,等主從同步之后,開始升級從庫

  • 在第一次升級時遇到問題,執行mysql_upgrade顯示表損壞。

         我們在升級前,首先檢查并修復表(MyISAM引擎)。     

 ./bin/mysqlcheck -uroot -h<HOST> -P<PORT> -p -r  -A
  • 停主從,記錄當前位置點         

stop slave;
show slave status;

          記錄下當前的位置點,并在配置文件中配置主從不隨數據庫啟動

          MySQL 'In Place' 升級實踐,從5.1到5.7

  • 關閉5.1版本數據庫

          MySQL 'In Place' 升級實踐,從5.1到5.7        

/etc/init.d/mysqld stop or
cd /usr/local/mysql51
./bin/mysqladmin -uroot --socket=/var/lib/mysql.sock -p'<PASSWORD>' shutdown
  • 修改5.7版本配置文件(具體哪些參數發生了變化,請閱讀文檔,upgrading to 5.1, upgrading to 5.5, upgrading to 5.6 or upgrading to 5.7。

      我注釋掉了以下幾項:    

<InnoDB相關,注釋掉undo有關的配置,因為undo文件只能在初始化時創建,
也可將innodb_undo_tablespaces設置為0,為了方便,將會有問題的配置注釋,使用默認配置>
#innodb_data_file_path          = ibdata1:1024M:autoextend
#innodb_file_per_table          = 1 
#innodb_undo_directory          = <DATADIR>
#innodb_undo_logs             = 128  
#innodb_undo_tablespaces         = 3   
#innodb_undo_log_truncate        = 1
#innodb_max_undo_log_size        = 1G
復制相關
#gtid_mode                  = on
#enforce_gtid_consistency        = true
#master_info_repository         = TABLE
#relay_log_info_repository       = TABLE
#slave_parallel_workers         = 2
<修改以適應5.1版本>
binlog_checksum               = NONE
sql_mode                   ='NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
  • 配置文件修改完成后,進入5.7版本文件夾,開啟數據庫,注意使用--skip-grant-tables

       

cd  /usr/local/mysql57
./bin/mysqld_safe --defaults-file=../my.cnf --datadir=<DATADIR> --basedir=.  
--port=< PORT> --socket=/var/lib/mysql.sock --skip-grant-tables &
  • NOTE:如果沒有問題則啟動完成,我遇到的問題是, mysqld_safe 需要在文件夾(/usr/local/mysql57 )內執行

  • 運行mysql_upgrade     

./bin/mysql_upgrade -uroot --socket=/var/lib/mysql.sock
  • 簡單說一下升級的過程,mysql_upgrade首先檢查系統庫并修復,檢查并安裝sys庫,performance庫。但并沒有移除5.1默認的test庫。然后開始檢查業務庫,修復不兼容的列。我在測試中主要碰到的提示為:       

Note     : TIME/TIMESTAMP/DATETIME columns of old format have been upgraded to the new format.

      upgrade 修復該問題的sql為:

ALTER TABLE `<DB>`.`<TABLE>`  FORCE

      由于5.6.6后修改了TIME/TIMESTAMP/DATETIME的一些行為,因此需要進行升級,關于具體哪些變化請移步官檔

      碰到的錯誤

        1. 存在損壞的表,無法升級。升級前需要先repair table,注意應使用5.1版本

        2. 表不支持升級  

Error: Unable to open underlying table which is differently defined 
       or of non-MyISAM type or doesn't exist
檢查報錯的表引擎為MRG-MYISAM。需要手動重新創建,
去主庫導出建表語句,先刪掉5.7的表,再執行創建表語句即可
  • 重啟數據庫

          運行過mysql_upgrade 之后,再次登錄就需要密碼了。      

./bin/mysqladmin -uroot -h<HOST> -P<PORT> -p  shutdown
./bin/mysqld_safe --defaults-file=../my.cnf --datadir=<DATADIR> --basedir=.  
--port=< PORT> --socket=/var/lib/mysql.sock --skip-grant-tables &

          MySQL 'In Place' 升級實踐,從5.1到5.7

  • 再次檢查        

./bin/mysqlcheck -uroot -h<HOST> -P<PORT> -p  -A

           使用的數據庫未使用觸發器,存儲過程等,因為在這步就沒有報錯了。如果有使用,可以根據提示信息,決定是修復還是重建

          檢查主從是否正常開啟。

          MySQL 'In Place' 升級實踐,從5.1到5.7

          根據報錯信息,應該為relay log記錄的問題,我們重啟下主從。      

stop slave;start slave;

這時主從已經恢復正常了,查找網上的解決方法是reset slave,如果重啟不管用的話只能重搭了,還好升級前記錄了位置點。 

  • 現在數據庫已經能夠提供使用了,整個過程中  check 消耗大約1小時,upgrade 消耗了4小時左右。之后將與‘dump’升級方式進行對比。后面還需要一些數據檢查的工作,由于對數據內容不了解,就沒有繼續進行。    

                                                      

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沐川县| 卢湾区| 黔西| 双峰县| 温宿县| 广安市| 南宁市| 濮阳市| 青神县| 肇源县| 福泉市| 牡丹江市| 大埔县| 泰和县| 云龙县| 翼城县| 乳山市| 呼图壁县| 佛冈县| 甘泉县| 台北市| 建德市| 吉安市| 八宿县| 宜城市| 勐海县| 通海县| 江陵县| 莱芜市| 嫩江县| 贡觉县| 大新县| 清丰县| 汾阳市| 洱源县| 凤阳县| 保定市| 白水县| 德兴市| 晋州市| 瑞金市|