1. 程式人生 > >MySQL5.6.25升級MySQL5.7.15

MySQL5.6.25升級MySQL5.7.15

升級

環境介紹

Part1:寫在最前

提到MySQL升級,網上文章數之不盡,但大多數為老的版本,諸如升級到、升級到,今天給大家介紹下升級到版本的方法和注意事項。

Part2:升級方法

升級的方法一般有兩類:

1.利用mysqldump來直接匯出sql檔案,匯入到新庫中,這種方法是最省事兒的,也是最保險的,缺點的話,也顯而易見,大庫的mysqldump費時費力。

2.直接替換掉mysql的安裝目錄和,利用mysql_upgrade 來完成系統表的升級,這種方法需要備份原有的檔案,但屬於物理拷貝,速度較快。缺點的話,跨版本升級不推薦這麼做,比如升級到,升級到等。

本文采用的是第二種方法升級。

Part3:環境

資料庫軟體目錄:/usr/local/mysql

位置:/etc/

資料庫data目錄:/data/mysql

慢日誌目錄:/data/slowlog

準備工作

Part1:

[[email protected] ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: -log MySQL Community Server (GPL)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select version();
+------------+
| version()  |
+------------+
| -log |
+------------+
1 row in set ( sec)
mysql> use helei;
Database changed
mysql> show tables;
+-----------------+
| Tables_in_helei |
+-----------------+
| helei           |
+-----------------+
1 row in set ( sec)

我這裡用的是版本作為待升級庫,庫中已經模擬和建立了資料庫helei和表helei,用以之後驗證升級。

Part2:備份

備份整體需要備份的是、資料庫安裝目錄、還有資料目錄。

[[email protected] ~]# /etc//mysqld stop

Shutting down MySQL.. SUCCESS! 

[roo[email protected] etc]# cp -rp my_56_

[[email protected] local]# cp -rp mysql mysql_56_old

[[email protected] ~]# rm -rf /usr/local/mysql

[[email protected] data]# cp -rp mysql/ mysql_56_old

這裡我直接採用cp的方式來進行。

Part3:替換

1.替換/etc/為的

[[email protected] ~]#vi /etc/
[client]
port=3306
socket=/tmp/
default-character-set=utf8
[mysql]
no-auto-rehash
default-character-set=utf8
[mysqld]
port=3306
character-set-server=utf8
socket=/tmp/
basedir=/usr/local/mysql
datadir=/data/mysql
explicit_defaults_for_timestamp=true
lower_case_table_names=1
back_log=103
max_connections=3000
max_connect_errors=100000
table_open_cache=512
external-locking=FALSE
max_allowed_packet=32M
sort_buffer_size=2M
join_buffer_size=2M
thread_cache_size=51
query_cache_size=32M
#query_cache_limit=4M
transaction_isolation=REPEATABLE-READ
tmp_table_size=96M
max_heap_table_size=96M
###***slowqueryparameters
long_query_time=1
slow_query_log = 1
slow_query_log_file=/data/slowlog/
###***binlogparameters
log-bin=mysql-bin
binlog_cache_size=4M
max_binlog_cache_size=8M
max_binlog_size=1024M
binlog_format=MIXED
expire_logs_days=7
###***relay-logparameters
#relay-log=/data/3307/relay-bin
#relay-log-info-file=/data/3307/relay-
#master-info-repository=table
#relay-log-info-repository=table
#relay-log-recovery=1
#***MyISAMparameters
key_buffer_size=16M
read_buffer_size=1M
read_rnd_buffer_size=16M
bulk_insert_buffer_size=1M
#skip-name-resolve
###***master-slavereplicationparameters
server-id=$SERVERID
slave-skip-errors=all
#***Innodbstorageengineparameters
innodb_buffer_pool_size=512M
innodb_data_file_path=ibdata1:10M:autoextend
#innodb_file_io_threads=8
innodb_thread_concurrency=16
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=16M
innodb_log_file_size=512M
innodb_log_files_in_group=2
innodb_max_dirty_pages_pct=75
innodb_buffer_pool_dump_pct=50
innodb_lock_wait_timeout=50
innodb_file_per_table=on
innodb_buffer_pool_dump_at_shutdown=1
innodb_buffer_pool_load_at_startup=1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
[mysqldump]
quick
max_allowed_packet=32M
[myisamchk]
key_buffer=16M
sort_buffer_size=16M
read_buffer=8M
write_buffer=8M
[mysqld_safe]
open-files-limit=8192
log-error=/data/mysql/
pid-file=/data/mysql/

2.解壓新版mysql

[[email protected] ~]# tar xvf mysql--linux--x86_ 

[[email protected] ~]# mv mysql--linux--x86_64 /usr/local/mysql

[[email protected] ~]# chown -R mysql. /usr/local/mysql

3.替換新版mysqld啟動指令碼

[[email protected] ~]# cp /usr/local/mysql/support-files/ /etc//mysqld

cp: overwrite `/etc//mysqld'? y

開始升級

Part1:啟動

[[email protected] ~]# /etc//mysqld start
Starting MySQL..... SUCCESS! 
[[email protected] ~]# ps -ef|grep mysql
root     26467     1  0 20:30 pts/2    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/
mysql    27197 26467  4 20:30 pts/2    00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/ --open-files-limit=8192 --pid-file=/data/mysql/ --socket=/tmp/ --port=3306
root     27235 25656  0 20:31 pts/2    00:00:00 grep mysql

這裡雖然啟動成功了,但error日誌裡能捕捉到很多錯誤資訊,因為沒有升級字典,諸如:

2016-10-20T03:30: 0 [ERROR] Native table 'performance_schema'.'events_statements_summary_by_program' has the wrong structure
2016-10-20T03:30: 0 [ERROR] Native table 'performance_schema'.'events_transactions_current' has the wrong structure
2016-10-20T03:30: 0 [ERROR] Native table 'performance_schema'.'events_transactions_history' has the wrong structure
2016-10-20T03:30: 0 [ERROR] Native table 'performance_schema'.'events_transactions_history_long' has the wrong structure
2016-10-20T03:30: 0 [ERROR] Native table 'performance_schema'.'events_transactions_summary_by_thread_by_event_name' has the wrong structure

Part2:系統表升級

1.升級資料字典

[[email protected] ~]# /usr/local/mysql/bin/mysql_upgrade -uroot -pMANAGER
mysql_upgrade: [Warning] Using a password on the command line interface can be insecure.
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
_priv                                 OK
                                           OK
_cost                                  OK
                                        OK
                                         OK
_log                                  OK
_executed                                OK
_category                                OK
_keyword                                 OK
_relation                                OK
_topic                                   OK
_index_stats                           OK
_table_stats                           OK
_binlog_index                             OK
                                       OK
                                         OK
_priv                                   OK
_priv                                 OK
_cost                                  OK
                                      OK
_master_info                            OK
_relay_log_info                         OK
_worker_info                            OK
_log                                     OK
_priv                                  OK
_zone                                    OK
_zone_leap_second                        OK
_zone_name                               OK
_zone_transition                         OK
_zone_transition_type                    OK
                                         OK
Upgrading the sys schema.
Checking databases.
                                        OK
_config                                     OK
Upgrade process completed successfully.
Checking if update is needed.

2.重啟例項再次檢查error日誌

[[email protected] ~]# /etc//mysqld restart

Shutting down MySQL.. SUCCESS! 

Starting MySQL. SUCCESS! 

3.請保證一些路徑的設定和以前的一致,如果設定錯誤,很可能導致啟動不了資料庫

[ERROR] Could not use /data/slowlog/ for logging

我這裡是由於慢日誌的位置和老的路徑不一致,建立/data/slowlog即可,這裡要仔細看報錯,然後根據報錯來發現和解決問題。

驗證結果

Part1:輸入使用者名稱密碼檢查結果

[[email protected] ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: -log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select version();
+------------+
| version()  |
+------------+
| -log |
+------------+
1 row in set ( sec)

Part2:驗證庫和表是否有丟失

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| helei              |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
6 rows in set ( sec)

升級後,我們會發現多了一個sys庫,這個庫有很多的功能,以後再給大家慢慢介紹~

——總結——

MySQL升級有多種方式,但無論採用何種方式,都要做好備份和回滾的準備,以避免升級失敗所帶來的損失。由於筆者的水平有限,編寫時間也很倉促,文中難免會出現一些錯誤或者不準確的地方,不妥之處懇請讀者批評指正。

相關推薦

MySQL5.6.25升級MySQL5.7.15

升級 環境介紹 Part1:寫在最前 提到MySQL升級,網上文章數之不盡,但大多數為老的版本,諸如升級到、升級到,今天給大家介紹下升級到版本的方法和注意事項。 Part2:升級方法 升級的方法一般有兩類: 1.利用mysqldump來直接匯出sql檔案

centos7.2+mysql5.6.35+subversion1.9.7+apache+https+php5.6.20+manmanager1.10(一)

賬戶 停止 file set and .gz rep kcon start 最近因為windows平臺的powershell病毒,導致所有windows服務器都需要遷移到linux,其中也包括svn,遷移過程中遇到很多坑逐一踩過後,現在就過程記錄下 這套環境是使用的cent

mysql5.6.25編譯安裝步驟(這是我復制別人的,方便查看)

ODB mysql啟動 mysql grant inf hive port local min 原文地址:https://www.cnblogs.com/netsa/p/7088494.html 簡略步驟:mysql5.6.25編譯安裝步驟:下載mysql準備用戶和組y

MySQL5.6.25 RPM包安裝

1. 檢查mysql相關rpm包,有則移除 rpm -qa | grep mysql rpm -e pkgname yum remove mysql mysql-server mysql-libs compat-mysql51 2. 解壓安裝

MySQL5.6.4升級到5.6.40遇到的一些坑

      維護的一個老專案,資料庫版本過低,出現了一系列的MySQL高危漏洞,總之一大堆高危漏洞,解決此問題有兩種解決辦法,一個是升級MySQL,一個是改資料庫版本,從安全性角度考慮,還是需要升級MySQL為上策,升級過程的一些小經驗和大家分享一下。      首先說明的是

Centos 6.x 升級7

前言 因為軍佬放棄製作Centos7的網路重灌包,又Centos7的安裝引導和6有較大區別所以,選擇曲線救國(技術不行,只能這樣亂搞) 前文:Centos6.9一鍵重灌包https://ppx.ink/netrebuild.ppx 開始折騰 首先,用軍佬的指令碼安裝到Centos6.9(本懶人用的DO寶寶自

Mysql5.6主從配置(mysql5.5通用)

error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

python2.6版本升級2.7

一.下載2.7版本python及相關元件 二.安裝 上傳上面下載的軟體包到伺服器 安裝python tar xf Python-2.7.13.tgz cd Python-2.7.13

MySQL5.6到5.7版本升級采用IN-PLACE的升級方式需要具體關註的地方

null mysq 限定 replicate 有效 lac switch 錯誤 cat 一.SQL變更GET_LOCK()函數行為MySQL 5.7.5之前GET_LOCK()在執行第二次的額時候會釋放前面獲得的鎖,在此版本以後支持同時獲得多個鎖,如:mysql>

記一次MySQL遷移並從MySQL5.6升級到5.7後查詢慢了幾十倍的問題

打印 ins 狀態 sql語句 top 引用 為什麽 區別 image 起因 因為生產環境數據量越來越大,客戶越來越多,項目功能也越來越多,項目本身也越來越多,導致之前的服務器內存、硬盤都已經漸漸的不夠用了,當時出現了2種解決方案,增加服務器配置和新購服務器,但是就算是新增

mysql5.6升級5.7(物理方式)

本文的升級方式為物理升級: 直接替換掉mysql的安裝目錄和修改my.cnf,利用mysql_upgrade來完成系統表的升級,這種方法需要備份原有的檔案,屬於物理拷貝,速度較快。缺點的話,跨版本升級不推薦這麼做,比如mysql5.1升級到mysql5.6,mysql5.5升級到mysql5.7等。

Mysql5.6升級到5.7操作步驟

mysql5.6 升級至 mysql5.7 環境介紹: 舊庫: basedir=/usr/local/mysql-5.6 datadir=/home/mysql  config=/home/mysql/my.cnf sock=/home/mysql/mysql.sock 

centos mysql5.6 升級5.7

系統環境:centos7.2,linux3.10 [[email protected]_0_15_centos ~]# uname -a Linux VM_0_15_centos 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul

linux中的mysql5.6升級到5.7

公司伺服器使用的是5.6版本mysql,然後要升級到5.7,然而公司的mysql是使用rpm包安裝的mysql,於是我在網上各種搜尋mysql升級,終於在網上找到了一篇文章下面是文章的地址,(我是在參考人家的基礎上升級的) 注意: 我的是rpm安裝的

mysql5.6升級5.7

原地升級1.將現有的mysql關閉。使用cmd視窗,進入到mysql目錄下面,將mysql服務移除。?12X:\Ares\bin\mysql5.6\bin>mysqld --remove mysql5.6Service successfully removed.2.下載

windows下卸載mysql5.5,升級mysql5.7.25

ase mysql5 secure ucc div inno window eve mod 0. 停止mysql的服務 1. 卸載mysql5.5 1.1 使用360或者控制面板卸載mysql,為求幹凈,我使用的360,結果也需要手動清理 1.2 卸載完成之後到

mysql5.6升級到5.7後Sequel Pro無法連線解決

因為裝ntop,brew自動升級了本地的Mysql,結果升級完成之後,使用Sequel Pro連線總是報錯,使用mysql 命令列工具就沒有問題。 OSX版本 10.11.5 Mysql版本

centos6.7下安裝mysql5.6.22同時解決中文亂碼問題

系統服務 iptable nod -- 1.7 亂碼問題 dport 5.6 復制 1.下載 http://dev.mysql.com/downloads/mysql/ 或者使用wget下載: wget http://dev.mysql.com/get/Do

mysql5.6以上(適用5.7)免安裝版本 終極配置

進入 cli x64 basedir 其他 color cnblogs ade header 1.解壓你的mysql5.6 我解壓的位置是D:\Program Files\mysql-5.6.14-winx64,你可以隨意放在任何位置,不建議解壓到C盤 2.來到你解壓的

centos6.9升級mysql5.1到mysql5.6

升級 mysql 一:查看下是否有系統自帶MySQL的rpm包,如果有,需要刪除自帶的舊rpm包。[[email protected] mnt]# mysql -V mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64