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下载地址:
升级前(有一个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//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. mysql
启动mysql
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql//my.cnf --user=mysql &
在启动以后查看错误日志:
-- :: [ERROR] Native table 'performance_schema'.'events_statements_summary_by_thread_by_event_name' has the wrong structure
-- :: [ERROR] Native table 'performance_schema'.'events_statements_summary_by_account_by_event_name' has the wrong structure
-- :: [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//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:
[root@localhost][(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./
启动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//my.cnf --user=mysql &
启用tokudb引擎:
ps_tokudb_admin --enable -uroot -S /data/mysql//mysqltmp/mysql.sock -p --defaults-file=/data/mysql//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----. mysql mysql Nov : auto.cnf
drwx------. mysql mysql Nov : db01
-rw-------. mysql mysql Nov : log000000000000.tokulog29
drwx------. mysql root Nov : mysql
-rw-rw-r--. root root Nov : mysql_upgrade_info
drwxr-x---. mysql mysql Nov : performance_schema
-rw-------. mysql mysql Nov : private_key.pem
-rw-r--r--. mysql mysql Nov : public_key.pem
drwxr-x---. mysql mysql Nov : sys
-rw-r-----. mysql mysql Nov : tokudb.directory
-rw-r-----. mysql mysql Nov : tokudb.environment
-rw-------. mysql mysql Nov : __tokudb_lock_dont_delete_me_data
-rw-------. mysql mysql Nov : __tokudb_lock_dont_delete_me_environment
-rw-------. mysql mysql Nov : __tokudb_lock_dont_delete_me_logs
-rw-------. mysql mysql Nov : __tokudb_lock_dont_delete_me_recovery
-rw-------. mysql mysql Nov : __tokudb_lock_dont_delete_me_temp
-rw-r-----. mysql mysql Nov : tokudb.rollback
可以看见全部放在一起了,这怎么能够忍受呢。肯定改啊。关于有数据的修改tokudb的数据目录需要非常小心。官网参考地址:修改tokudb数据存放位置
下面我们开始移动,首先关闭mysql,然后创建tokudb存放数据的目录。
mkdir /data/mysql//tokudata -p
chown -R mysql.mysql /data/mysql//tokudata
配置文件增加:
tokudb_data_dir = /data/mysql//tokudata
tokudb_tmp_dir = /data/mysql//tokudata
tokudb_log_dir = /data/mysql//tokudata
innodb_use_native_aio =
日志文件,临时文件,数据目录都是/data/mysql/3306/tokudata,当然你可以分的更详细。然后移动文件:
按照官网:*.tokudb 及 __tokudb_lock_dont_delete_me_data 存放位置
1. 修改 tokudb_data_dir = /data/mysql/3306/tokudata
mv /data/mysql//data/__tokudb_lock_dont_delete_me_data /data/mysql//tokudata/
2. 修改 tokudb_tmp_dir = /data/mysql/3306/tokudata
tokudb_tmp_dir 默认会读取 tokudb_data_dir 这个值,所以需要移动以及在配置文件显示指定。
mv /data/mysql//data/__tokudb_lock_dont_delete_me_temp /data/mysql//tokudata/
3. 修改 tokudb_log_dir = /data/mysql/3306/tokudata
mv /data/mysql//data/log000000000000.tokulog29 /data/mysql//tokudata
mv /data/mysql//data/__tokudb_lock_dont_delete_me_logs /data/mysql//tokudata/
4. 最后移动__tokudb_lock_dont_delete_me_recovery
mv /data/mysql//data/__tokudb_lock_dont_delete_me_recovery /data/mysql//tokudata/
ll /data/mysql//tokudata/
total
-rw-------. mysql mysql Nov : log000000000000.tokulog29
-rw-------. mysql mysql Nov : __tokudb_lock_dont_delete_me_data
-rw-------. mysql mysql Nov : __tokudb_lock_dont_delete_me_logs
-rw-------. mysql mysql Nov : __tokudb_lock_dont_delete_me_recovery
-rw-------. mysql mysql Nov : __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//tokudata/db01
[root@localhost]# ll
total
-rw-r-----. mysql mysql Nov : t1_key_id_8_2_1d.tokudb
-rw-r-----. mysql mysql Nov : t1_main_8_3_1d.tokudb
-rw-r-----. mysql mysql Nov : t1_status_8_4_1d.tokudb
MySQL社区版升级到Percona Server的更多相关文章
- yum install mysql-community-server yum方式安装mysql(社区版实操)
前言:rpm方式或者这种yum安装时比较简单的方式,但是不推荐,但是确实很着急的话,可以采用这种安装这种方式不利于后续对mysql的管理,如果是多实例或者是复杂的一些架构的话,还是推荐利用源码包编译方 ...
- MySQL 社区版
MySQL 社区版 MySQL 社区版是全球广受欢迎的开源数据库的免费下载版本.它遵循 GPL 许可协议,由庞大.活跃的开源开发人员社区提供支持. MySQL 社区版包括: 可插拔的存储引擎架构 多种 ...
- MYSQL社区版安装手册
https://www.jb51.net/article/140412.htm 在本教程中使用MySQL最新的MySQL服务8.0.11的社区绿色版本进行安装,绿色版为zip格式的包,安装分为以下四步 ...
- MySQL 社区版 安装小记
根据刘铁猛老师的教程,自己折腾一下 1. 安装包准备 在Windows10 64bit上安装,故需要准备vc++ 2013和2015的Redistributable的包,搜索即有,无需细说. 示例数据 ...
- MySql社区版和企业版的区别
1.社区版的免费,出问题MySql公司概不负责,是企业版的测试版,功能却没有企业版功能完善. 2.企业版的收费,并且价格不便宜,标准版2000美元,企业版5000美元,高级集群版10000美元(6万人 ...
- MAC下BurpSuit社区版升级pro版
环境OSX 步骤1. 官网下载社区版v1.7.32https://portswigger.net/burp/communitydownload 安装 2. 下载keygenhttps://down.5 ...
- 安装MySql社区版(35-3)
1,https://dev.mysql.com/ --------------------------------------------------------------------------- ...
- MySQL社区版是世界上最流行的开源数据库的免费
昨天晚上搞了很久,终于搞清楚mysql的安装配置了,我真是太low了.当我在云服务器上登进Mysql时,真是高兴哈哈,咱一步一步来,彻底搞懂Mysql的安装配置. 我的安装环境: 阿里云服务器 1 2 ...
- 【转】哦,mysql 的其它发行版本Percona, mariadb
原文:http://geek.csdn.net/news/detail/130146 2016年11月25日,沃趣科技"智慧应用 数据先行"2016产品发布会暨新三板挂牌庆祝会在杭 ...
随机推荐
- maven 编码 UTF-8 的不可映射字符
maven编译时报错,后面发现代码是用GBK编码编写,maven默认是用utf-8来编译.修改pom.xml <build> <plugins> <plugin> ...
- JavaScript -DOM 编程艺术 2nd 完
今日看完了这本书,做完了最后一个综合性例子.说实话收获良多,终于明白前端-h5 具体做什么 越学习越无知,这个看来真是一个真理. 后期计划: 1.CSS + DIV 布局深入了解,重点实战 2.Jav ...
- Python3--Numpy
数组的形状是它有多少行和列,上面的数组有5行和5列,所以它的形状是(5,5). itemsize属性是每个项占用的字节数.这个数组的数据类型是int 64,一个int 64中有64位,一个字节中有8位 ...
- 第4周小组作业:WordCount优化
Github项目地址:https://github.com/chaseMengdi/wcPro stage1:代码编写+单元测试 PSP表格 PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分 ...
- Minimum setup for Apache+AD SSO
参照: http://www.grolmsnet.de/kerbtut/ https://docs.typo3.org/typo3cms/extensions/ig_ldap_sso_auth/2.1 ...
- OC内存管理、非ARC机制、MRR机制
在Xcode里面,默认为ARC(auto reference counting),也就是自动内存管理机制,在这里我们要了解的是内存管理,肯定是不能让系统帮我们管理内存,我们需要将ARC关闭,首先在左边 ...
- ios之好用的Reachability
#import <Foundation/Foundation.h> @interface NetWorkTool : NSObject + (instancetype)shareInsta ...
- openGL-计算机图形大作业中出现的几个错误及解决
错误一 错误现象:按动相应按键i和o无法在x轴和y轴移动camera,但按相应按键p可以在z轴移动camera. 错误原因:为了移动camera,设置了三个全局变量x.y.z,用于gluLookAt( ...
- 兆芯 服务器 win2012/win7装机总结
兆芯cpu 服务器 win2012/win7装机总结 一.设置U盘启动装机 启动后,esc进入bios修改下图两个地方,都要改,然后保存. 二.重启计算机,进入win安装界面,会出现无法安装,原因是: ...
- 【MySQL】常用监控指标及监控方法
对之前生产中使用过的MySQL数据库监控指标做个小结. 指标分类 指标名称 指标说明 性能类指标 QPS 数据库每秒处理的请求数量 TPS 数据库每秒处理的事务数量 并发数 数据库实例当前并行处理的 ...