PXC版本升級(從5.6到5.7)

“滾動升級”意味着在升級過程中無需關閉整個集羣,不影響業務。

跨版本升級(從5.6到5.7版本)和小版本升級(從5.7.x到5.7.y)都可以這樣做。

不支持從早於5.6的版本升級到5.7。因此,如果您運行的是Percona XtraDB集羣版本5.5,建議關閉所有節點,然後從頭刪除並重新創建羣集。或者,您可以執行從PXC 5.5到5.6的滾動升級,然後從5.6至5.7的滾動升級。

一 試驗環境

角色

主機名

IP

操作系統

PXC版本

pxc1

pc1

192.168.1.202

 

CentOS 6

 

從5.6升級到5.7

pxc2

pc2

192.168.1.203

pxc3

pc3

192.168.1.204

 

二 試驗步驟

2.1 升級第一個節點

2.1.1 確保所有節點已同步(synchronized)

在每個節點上執行:

mysql> show status like 'wsrep_local_state_comment';

+---------------------------+--------+

| Variable_name             | Value  |

+---------------------------+--------+

| wsrep_local_state_comment | Synced |

+---------------------------+--------+

2.1.2 停止mysql服務

service mysql stop

在其他節點上插入兩條數據,看升級完畢後數據庫是否會同步到該節點上。

2.1.3 卸載已經存在的Percona XtraDB Cluster and Percona XtraBackup packages, 然後安裝Percona XtraDB Cluster version 5.7 packages

yum remove percona-xtrabackup* Percona-XtraDB-Cluster* -y

/*

如果卸載的時候報錯:

No Match for argument: Percona-XtraDB-Cluster-5.7.28-rel31-31.41.1.Linux.x86_64.ssl101.tar.gz

可嘗試一個個remove,示例:

[root@pc1 download]# rpm -qa | grep Per

Percona-XtraDB-Cluster-client-56-5.6.46-28.38.1.el6.x86_64

Percona-Server-shared-51-5.1.73-rel14.12.625.rhel6.x86_64

Percona-XtraDB-Cluster-shared-56-5.6.46-28.38.1.el6.x86_64

Percona-XtraDB-Cluster-server-56-5.6.46-28.38.1.el6.x86_64

Percona-XtraDB-Cluster-galera-3-3.38-1.el6.x86_64

Percona-XtraDB-Cluster-56-5.6.46-28.38.1.el6.x86_64

 

yum remove Percona-XtraDB-Cluster-client-56-5.6.46-28.38.1.el6.x86_64

……

*/

 

yum install Percona-XtraDB-Cluster-57 -y

2.1.4 備份grastate.dat

以便在它因網絡問題而損壞或歸零時恢復它。

cd /var/lib/mysql

cp grastate.dat grastate.dat_bak

2.1.5 以單實例模式啓動該節點

mysqld --skip-grant-tables --skip-networking --user=mysql --wsrep-provider='none'

#檢查數據庫是否啓動

[root@pc2 ~]# ps -ef | grep mysql

mysql     3930  3858 15 13:33 pts/1    00:00:01 mysqld --skip-grant-tables --skip-networking --user=mysql --wsrep-provider=none

2.1.6 執行mysql_upgrade

新打開一個會話,執行:mysql_upgrade

[root@pc1 download]# mysql_upgrade

Checking if update is needed.

Checking server version.

Running queries to upgrade MySQL server.

Checking system database.

mysql.columns_priv                                 OK

mysql.db                                           OK

mysql.engine_cost                                  OK

mysql.event                                        OK

mysql.func                                         OK

mysql.general_log                                  OK

mysql.gtid_executed                                OK

mysql.help_category                                OK

mysql.help_keyword                                 OK

mysql.help_relation                                OK

mysql.help_topic                                   OK

mysql.innodb_index_stats                           OK

mysql.innodb_table_stats                           OK

mysql.ndb_binlog_index                             OK

mysql.plugin                                       OK

mysql.proc                                         OK

mysql.procs_priv                                   OK

mysql.proxies_priv                                 OK

mysql.server_cost                                  OK

mysql.servers                                      OK

mysql.slave_master_info                            OK

mysql.slave_relay_log_info                         OK

mysql.slave_worker_info                            OK

mysql.slow_log                                     OK

mysql.tables_priv                                  OK

mysql.time_zone                                    OK

mysql.time_zone_leap_second                        OK

mysql.time_zone_name                               OK

mysql.time_zone_transition                         OK

mysql.time_zone_transition_type                    OK

mysql.user                                         OK

Upgrading the sys schema.

Checking databases.

baidd.t                                            OK

sys.sys_config                                     OK

Upgrade process completed successfully.

Checking if update is needed.

2.1.7 關閉數據庫

mysqladmin shutdown或kill掉mysql進程

2.1.8 重命名配置文件

在CentOS上,my.cnf配置文件可能會被重命名爲my.cnf.rpmsave。所以,需要檢查下my.cnf,my.cnf.rpmsave文件內容,需要的話,將升級後的節點重新加入羣集之前將其重命名回來。

cd /etc

mv my.cnf.rpmsave my.cnf

2.1.9 將升級後的節點加入到集羣裏

service mysql start

/*

如果數據庫起不來,報錯:ERROR! MySQL (Percona XtraDB Cluster) is not running, but PID file exists

可嘗試根據其他節點的配置文件,新建下my.cnf,注意需要修改wsrep_node_name及wsrep_node_address的值

*/

2.1.10 檢查數據同步情況

檢查之前插入的兩條數據是否同步到了該節點上。

新插入兩條數據,再次檢查數據同步情況。

檢查集羣狀態:

2.1.11 檢查數據庫版本

mysql> select @@version;

+----------------+

| @@version      |

+----------------+

| 5.7.28-31-57.2 |

+----------------+

1 row in set (0.00 sec)

2.2 對羣集中的下一個節點重複2.1步驟,直到升級所有節點

注意:

節點在重新連接集羣時,應該使用IST進行同步。爲此,最好不要離開羣集節點太長時間。

當執行任何升級時,如果服務器已脫機一段時間,可以使用SST進行同步。SST完成後,需要再一次升級數據目錄結構(使用mysql_upgrade)確保與較新版本的二進制文件兼容:

① 停止mysql服務

service mysql stop

② mysqld --skip-grant-tables --skip-networking --user=mysql --wsrep-provider='none'

③ 執行mysql_upgrade

 

--本篇文章主要參考自PXC官方手冊,該手冊也介紹了怎樣進行小版本升級(如5.7內的小版本升級)。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章