MySQL社区版升级到Percona Server

出于磁盘空间的考虑,在调研以后把磁盘空间紧张的库的引擎改为tokudb,(在改为tokudb引擎之前是innodb引擎,已经压缩过,但空间还是紧张)关于tokudb的优势各位自行查阅相关资料。要启用tokudb引擎就需要使用percona server。tokudb引擎被percona server收购。线上mysql的版本是社区版5.5.24,于是升级过程就是 5.5.24 -> 5.6.25 -> 5.7.21 -> percona-5.7.22。在升级到percona 5.7.22以后启用tokudb引擎,然后改表的引擎。

准备好mysql 5.6.25,mysql 5.7.21,percona-5.7.22(全部放到一个指定路径,届时软链就是),percona server下载地址:

https://www.percona.com/downloads/Percona-Server-LATEST/Percona-Server-5.7.22-22/binary/tarball/Percona-Server-5.7.22-22-Linux.x86_64.ssl101.tar.gz

升级前(有一个db01库,里面有一张t1表):

mysql> use db01
Database changed
mysql> show create table t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(200) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

mysql> select version();
+------------+
| version()  |
+------------+
| 5.5.24-log |
+------------+
1 row in set (0.00 sec)

mysql> 

关闭数据库:

mysql> set global innodb_fast_shutdown=0;
Query OK, 0 rows affected (0.00 sec)

mysql> 
/usr/local/mysql/bin/mysqladmin -uroot -p -S /data/mysql/3306/mysqltmp/mysql.sock shutdown

调整软连接,用5.6.25启动(配置文件用5.5的还可以,在用5.7的版本启动的时候就需要适当的更改,可以找一份5.7的配置),软件习惯放在/usr/local下面

rm -f mysql
ln -s /usr/local/mysql-5.6.25 mysql

启动mysql

/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/3306/my.cnf --user=mysql &

在启动以后查看错误日志:

2018-11-22 16:42:33 21876 [ERROR] Native table ‘performance_schema‘.‘events_statements_summary_by_thread_by_event_name‘ has the wrong structure
2018-11-22 16:42:33 21876 [ERROR] Native table ‘performance_schema‘.‘events_statements_summary_by_account_by_event_name‘ has the wrong structure
2018-11-22 16:42:33 21876 [ERROR] Native table ‘performance_schema‘.‘events_statements_summary_by_user_by_event_name‘ has the wrong structure

有这些是正常的,我们需要运行mysql_upgrade

/usr/local/mysql/bin/mysql_upgrade -uroot -p -S /data/mysql/3306/mysqltmp/mysql.sock 

查看版本:

mysql> select version();
+------------+
| version()  |
+------------+
| 5.6.25-log |
+------------+
1 row in set (0.00 sec)

在数据目录下面也有一个文件记录升级版本:mysql_upgrade_info
到这里就从5.5.24升级到了5.6.25. 然后需要从5.6.25升级到5.7.21,这个过程其实是一样的。就不再阐述。我直接略过。

我这里升级到了5.7.21:

[[email protected]][(none)]> select version();
+------------+
| version()  |
+------------+
| 5.7.21-log |
+------------+
1 row in set (0.00 sec)

下面开始从mysql 5.7.21升级到percona 5.7.22. 正常关闭mysql,删掉软连接,从新软链。

mysql -> /usr/local/percona-5.7.22/

启动percona mysql前需要关闭THP

echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag

启动percona mysql并且安装tokudb。

/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/3306/my.cnf --user=mysql &

启用tokudb引擎:

ps_tokudb_admin --enable -uroot -S /data/mysql/3306/mysqltmp/mysql.sock -p --defaults-file=/data/mysql/3306/my.cnf

输出如下表示成功:

Installing TokuDB engine...
INFO: Successfully installed TokuDB engine plugin.
mysql> SELECT @@tokudb_version;
+------------------+
| @@tokudb_version |
+------------------+
| 5.7.22-22        |
+------------------+
1 row in set (0.00 sec)

可以看到已经安装成功。

但是有一个问题就是tokudb的数据目录默认在innodb的数据目录下面:

-rw-rw----. 1 mysql mysql    56 Nov 22 16:42 auto.cnf
drwx------. 2 mysql mysql    45 Nov 20 17:05 db01
-rw-------. 1 mysql mysql  1172 Nov 22 17:04 log000000000000.tokulog29
drwx------. 2 mysql root   4096 Nov 22 16:49 mysql
-rw-rw-r--. 1 root  root      6 Nov 22 16:49 mysql_upgrade_info
drwxr-x---. 2 mysql mysql  8192 Nov 22 16:49 performance_schema
-rw-------. 1 mysql mysql  1676 Nov 22 17:01 private_key.pem
-rw-r--r--. 1 mysql mysql   452 Nov 22 17:01 public_key.pem
drwxr-x---. 2 mysql mysql  8192 Nov 22 16:49 sys
-rw-r-----. 1 mysql mysql 16384 Nov 22 17:02 tokudb.directory
-rw-r-----. 1 mysql mysql 16384 Nov 22 17:02 tokudb.environment
-rw-------. 1 mysql mysql     0 Nov 22 17:02 __tokudb_lock_dont_delete_me_data
-rw-------. 1 mysql mysql     0 Nov 22 17:02 __tokudb_lock_dont_delete_me_environment
-rw-------. 1 mysql mysql     0 Nov 22 17:02 __tokudb_lock_dont_delete_me_logs
-rw-------. 1 mysql mysql     0 Nov 22 17:02 __tokudb_lock_dont_delete_me_recovery
-rw-------. 1 mysql mysql     0 Nov 22 17:02 __tokudb_lock_dont_delete_me_temp
-rw-r-----. 1 mysql mysql 16384 Nov 22 17:02 tokudb.rollback

可以看见全部放在一起了,这怎么能够忍受呢。肯定改啊。关于有数据的修改tokudb的数据目录需要非常小心。官网参考地址:修改tokudb数据存放位置
下面我们开始移动,首先关闭mysql,然后创建tokudb存放数据的目录。

mkdir /data/mysql/3306/tokudata -p
chown -R mysql.mysql /data/mysql/3306/tokudata

配置文件增加:

tokudb_data_dir               = /data/mysql/3306/tokudata
tokudb_tmp_dir                = /data/mysql/3306/tokudata
tokudb_log_dir                = /data/mysql/3306/tokudata
innodb_use_native_aio         = 0

日志文件,临时文件,数据目录都是/data/mysql/3306/tokudata,当然你可以分的更详细。然后移动文件:
按照官网:*.tokudb 及 __tokudb_lock_dont_delete_me_data 存放位置

1. 修改 tokudb_data_dir = /data/mysql/3306/tokudata

mv /data/mysql/3306/data/__tokudb_lock_dont_delete_me_data /data/mysql/3306/tokudata/

2. 修改 tokudb_tmp_dir = /data/mysql/3306/tokudata

tokudb_tmp_dir 默认会读取 tokudb_data_dir 这个值,所以需要移动以及在配置文件显示指定。

mv /data/mysql/3306/data/__tokudb_lock_dont_delete_me_temp /data/mysql/3306/tokudata/

3. 修改 tokudb_log_dir = /data/mysql/3306/tokudata

mv /data/mysql/3306/data/log000000000000.tokulog29 /data/mysql/3306/tokudata    
mv /data/mysql/3306/data/__tokudb_lock_dont_delete_me_logs /data/mysql/3306/tokudata/

4. 最后移动__tokudb_lock_dont_delete_me_recovery

mv /data/mysql/3306/data/__tokudb_lock_dont_delete_me_recovery  /data/mysql/3306/tokudata/
ll /data/mysql/3306/tokudata/
total 4
-rw-------. 1 mysql mysql 2723 Nov 22 17:09 log000000000000.tokulog29
-rw-------. 1 mysql mysql    0 Nov 22 17:02 __tokudb_lock_dont_delete_me_data
-rw-------. 1 mysql mysql    0 Nov 22 17:02 __tokudb_lock_dont_delete_me_logs
-rw-------. 1 mysql mysql    0 Nov 22 17:02 __tokudb_lock_dont_delete_me_recovery
-rw-------. 1 mysql mysql    0 Nov 22 17:02 __tokudb_lock_dont_delete_me_temp

启动percona mysql,启动完成以后注意查看一下错误日志有没有异常。然后再一次检查tokudb引擎是否启用了:

mysql> SELECT @@tokudb_version;
+------------------+
| @@tokudb_version |
+------------------+
| 5.7.22-22        |
+------------------+
1 row in set (0.00 sec)

至此已经升级到了percona 5.7.22,并且启用了tokudb引擎而且也改了数据目录。我们把原来的t1表的引擎修改成tokudb引擎看看。压缩算法有好多种,有兴趣的自行了解。

mysql> show create table t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(200) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

mysql> alter table t1 row_format=TOKUDB_LZMA engine=tokudb;
Query OK, 1 row affected (0.13 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> show create table t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(200) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  KEY `id` (`id`)
) ENGINE=TokuDB DEFAULT CHARSET=utf8 ROW_FORMAT=TOKUDB_LZMA
1 row in set (0.00 sec)

mysql> 

查看数据目录,数据也存放在了我们指定的位置:

/data/mysql/3306/tokudata/db01
[[email protected]]# ll
total 128
-rw-r-----. 1 mysql mysql 32768 Nov 22 17:26 t1_key_id_8_2_1d.tokudb
-rw-r-----. 1 mysql mysql 32768 Nov 22 17:26 t1_main_8_3_1d.tokudb
-rw-r-----. 1 mysql mysql 65536 Nov 22 17:26 t1_status_8_4_1d.tokudb

原文地址:https://www.cnblogs.com/gomysql/p/10001927.html

时间: 2024-08-03 10:28:33

MySQL社区版升级到Percona Server的相关文章

新手参考:Centos上安装MySQL社区版全过程

好久不动Linux了,加上以前用的本就少,所以这次安装,跟新手差不多,总结一下,供菜鸟们参考: 1.先从www.mysql.com 网站上下载到最新版的mysql社区版安装包,我下到的是mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz 2.mysql安装包里是没有./configure & make这一套东东的,需要按照其说明文档进行操作,这里从安装包里看到的是INSTALL-BINARY,用UE打开后 其中有一段 shell> groupadd mysql

mysql5.5.46升级到Percona Server 5.6.27

1.升级前的准备 查看本机openssl版本 [email protected] mysql5.6]# rpm -qa | grep ssl openssl-1.0.1e-42.el6_7.2.x86_64 openssl-devel-1.0.1e-42.el6_7.2.x86_64 https://www.percona.com/downloads/Percona-Server-5.6/LATEST/软件下载地址 Percona-Server-5.6.27-rel75.0-Linux.x86_

MySQL 社区版 安装小记

根据刘铁猛老师的教程,自己折腾一下 1. 安装包准备 在Windows10 64bit上安装,故需要准备vc++ 2013和2015的Redistributable的包,搜索即有,无需细说. 示例数据库下载:搜索MySQL data example,下载世界地名示例数据库和sakila数据库即可.找不到的可以到官网下载:https://dev.mysql.com/doc/index-other.html 下载zip格式的就可以,解压出来备用. 接下来准备zip格式的MySQL引擎,和Workbe

安装mysql社区版 5.6.37的过程

安装mysql的方法很多,但是我最喜欢就是yum,因为简单又无脑. 那么首先要#rpm -Uvh http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm,然后#yum install mysql-community-server,进行安装,这个安装的版本是5.6社区版. 安装完毕之后,发现#service mysqld start无法启动,如图: 这个时候就去查看一下mysql的错误日志,#less /var/log/mysq

安装MySql社区版(35-3)

1,https://dev.mysql.com/ --------------------------------------------------------------------------------------------------------------- 2,点击downloads ---------------------------------------------------------------------------------------------------

MySQL Study之--Percona server 5.5升级5.6

MySQL Study之--Percona server 5.5升级5.6 系统环境:      操作系统:CentOS_6.5(64)            MySQL:   Percona server 5.5(5.6) 一.升级的目的 为什么MySQL升级是必须的? 原因有很多,比如:为了使用新增的特性,基于性能方面的考量, 修复的bug. 但是在没有充分的测试以前就应用到你的应用中是非常危险的, 因为升级可以能会让你的应用不能正常运作- 也可能引起性能的问题. 此外, 我建议你关注MyS

Linux 下编译安装 MySQL(Percona Server) 5.6

系统环境: CentOS 6.5 / 7.0 x86_64 Fedora 20 x86_64 简介 Percona Server 是 MySQL 的衍生版,专注于 Linux/BSD 下 MySQL 数据库服务器的改进, 在功能和性能上较 MySQL 有着显著的提升. Percona Server 的编译.配置和使用与 MySQL 完全一致,你完全可以把它当成是 MySQL 来使用. 下载 Percona Server 源码包 cd /usr/local/src wget https://www

【转】哦,mysql 的其它发行版本Percona, mariadb

原文:http://geek.csdn.net/news/detail/130146 2016年11月25日,沃趣科技"智慧应用 数据先行"2016产品发布会暨新三板挂牌庆祝会在杭州华美达酒店隆重举行,近百位知名企业专家.合作伙伴及媒体人共同出席本次会议,分享数据库相关领域的创新成果和成功经验,一同探讨数据库云化的摸索探寻之路. 借此契机,CSDN记者有幸邀请到沃趣科技联合创始人.高级数据库专家李春,围绕一些大家关心的话题进行采访.纵观MySQL的前世今生,漫谈MySQL十年长路,剖析

Linux 下 YUM 安装 Percona Server 5.6

Percona Server 是 MySQL 的衍生版,专注于 Linux/BSD 下 MySQL 数据库服务器的改进, 在功能和性能上较 MySQL 有着显著的提升. Percona Server 的使用和 MySQL 完全一致,你完全可以把它当成是 MySQL 来使用. 安装 Percona Server 编辑 Percona.repo: # vi /etc/yum.repos.d/Percona.repo 添加以下内容: [percona] name = CentOS $releaseve