MySQL 升级详细步骤 (包括 Percona)

MySQL 升级步骤

MySQL 5.1.72 升级到 MySQL 5.5.36

鉴于我在升级的时候遇到的麻烦问题,我觉得有必要把一些细节说清楚,免得引起误解了。感觉官方文档上的升级步骤写的比较简单,很容易引起混淆,感觉同我当时参照官方文档学习定制安装 MySQL 一样蛋疼。可能真的是外国淫的思维跟我差距太大了。

数据库情况:本人测试的都是 Linux Generic x86_64 版本的,也是定制安装到制定的数据库目录的。

详细升级步骤

1.MySQL 5.1.72 启动的实例 ins1

假设你已经安装了 MySQL 5.1.72,并且成功的启动了一个实例 ins1。软件可以在官网 MySQL 5.1.72 下载。

2.备份 ins1的数据和配置文件my1.cnf

无论以前操作了多少次升级步骤,升级前备份数据那是必须的!我这里是测试数据,就直接通过mysqldump 工具备份的,如果是生产库,可以使用 percona 公司的在线备份工具进行备份。

复制一份my1.cnf到其他位置进行备份,防止升级失败后能够快速的恢复 ins1。

3.关闭 ins1

 mysqladmin -uroot -p -S $sockdir  shutdown 

4.通过 MySQL 5.5.36 启动 实例ins1 原来的数据目录,命名为 ins2

1)修改my1.cnf ,把一些与高版本不兼容的参数或者一些废弃的参数修改成高版本能够接受的参数。

2)用高版本的 MySQL 5.5.36 来启动,切记不要用低版本的 MySQL 启动,那样 my1.cnf 的修改也米有意义了。

因为高版本的系统库 mysql database 和低版本的 mysql database 会有一些表是不兼容的,所以为了让高版本的 MySQL 能够启动 低版本的系统数据,需要加上参数 --skip-grant-tables 来忽略mysql database 里授权表(grant tables)的验证。同时,忽略授权表启动 MySQL 实例 ins2 后, 为了保证 MySQL 实例的安全,可以加上参数 --skip-networking 来阻止通过网络来访问的客户端。

mysqld_safe --defaults-file=$cnf_path --skip-grant-tables --skip-networking &

5.执行 mysql_upgrade

启动实例 ins2 成功以后,通过高版本的 MySQL 5.5.36 的 bin 目录 mysql_upgrade 命令来升级 ins2

mysql_upgrade -uroot -p -S $socket_path

这个步骤实际执行的内容(来源于手册):

mysqlcheck --all-databases --check-upgrade --auto-repair
mysql < fix_priv_tables
mysqlcheck --all-databases --check-upgrade --fix-db-names --fix-table-names

如果看到最后面显示的OK,表示成功了

...
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
percona51.ptablet                                  OK
Running ‘mysql_fix_privilege_tables‘...
OK

6.重启 mysql 实例ins2

用MySQL 5.5.36 的二进制包(不是 MySQL 5.1.72)

mysqladmin -uroot -p -S $sockdir  shutdown
#这次正常启动,不需要带上其他参数。
mysqld_safe --defaults-file=$cnf_path &

Percona Server 5.1.61 升级到 Percona Server 5.5.39

Percona Server 是 Percona 公司根据 MySQL 存在的一些性能上的缺陷进行改进,从而形成了一个新的免费的 MySQL 版本。 他们的升级文档就是三个字来形容就是 “太简单”,为了把一些步骤说清楚,也为了我以后少走点弯路,我还是把我升级步骤详细的罗列出来,以供日后查阅吧。

这次升级我从安装 Percona Server 实例开始讲述,因为 Percona 的配置文件和 MySQL 还是有部分区别的,新手用二进制文件安装的话可能需要一回来查找执行文件。

1.安装 Percona Server 5.1.61 实例 P1

1)下载 Percona Server 5.1.61

2)解压缩文件,然后进入到安装目录下。

我这里是 /home/devops/Percona-Server-5.1.61

3)根据 配置文件来文件:Percona5.1.txt 安装系统库目录

这个目录是针对我自己的安装目录,参数需要根据自己的 OS 进行调整。主要需要注意的是如下几个参数:

#这两个参数在高版本的参数文件中需要调整
ledir           = /home/devops/Percona-Server-5.1.61/libexec
language                = /home/devops/Percona-Server-5.1.61/share/mysql/english
#根据自己内存大小来调整
innodb_buffer_pool_size = 256M

配置文件穿件完毕后,安装系统库。执行命令:

./bin/mysql_install_db --defaults-file=/home/devops/cnf/mysql4308.cnf --basedir=/home/devops/Percona-Server-5.1.61

4)验证系统库是否安装成功

要验证系统库是否安装成功,可以在参数文件中指定的data-dir目录下看看是否有 mysql,test文件夹,以及mysql文件夹下面是否有很多以 frm、MYI、MYD 接尾的系统文件。

5)启动实例 P1

$ cd /home/devops/Percona-Server-5.1.61/bin
./mysqld_safe --defaults-file=/home/devops/cnf/mysql4308.cnf &

# ps -ef | grep 4308 验证是否成功,如果没有,请看看 MySQL 错误日志,是否哪里的参数出现了问题。

2.备份5.1参数文件,修改参数文件来满足 Percona 5.5 的参数要求(重要!!)

备份 mysql4308.cnf :$ cp mysql4308.cnf mysql4308_bak.cnf。修改 mysql4308.cnf 来符合 Percona Server 5.5.36 的参数需求,具体的差异可以查看 Percona文档,本人操作的时候主要修改了如下的几个参数:

ledir           = /home/devops/percona/percona5.5.39/bin
lc-messages-dir         =/home/devops/percona/percona5.5.39/share

修改后的参数文件 文件:Percona5.5.txt

3.关闭 实例 P1,用 Percona Server 5.5.39 以(skip-grant-tables)方式启动 实例 P2

1)下载Percona Server 5.5.39  http://www.percona.com/redir/downloads/Percona-Server-5.5/Percona-Server-5.5.39-36.0/binary/tarball/Percona-Server-5.5.39-rel36.0-697.Linux.x86_64.tar.gz,解压缩。

2)重启 MySQL

这次是第一次用高版本的 MySQL软件启动低版本的数据,避免权限表的验证,需要加上 skip-grant-tables 参数。

cd /home/devops/percona/percona5.5.39/bin
./mysqladmin -uroot -p -S /home/devops/mysql4308/mysqld.sock  shutdown
./mysqld_safe --defaults-file=/home/devops/cnf/mysq4308.cnf --skip-grant-tables --skip-networking &

note: 最后一步执行mysqld_safe的时候,很可能因为参数文件的参数不能被识别而导致出现启动错误,请根据错误日志的提示来修正。

4.执行 Percona Server 5.5.36 的 mysql_upgrade

./mysql_upgrade -uroot -p -S /home/devops/mysql4308/mysqld.sock

执行后如果出现下面的情况,表示 OK 了。

......
mysql.user                                         OK
percona51.ptablet                                  OK
Running ‘mysql_fix_privilege_tables‘...
OK

5.关闭实例 P2,然后重启 MySQL

cd /home/devops/percona/percona5.5.39/bin
mysqladmin -uroot -p -S /home/devops/mysql4308/mysqld.sock shutdown
./mysqld_safe --defaults-file=/home/devops/cnf/mysq4308.cnf &

6.验证是否成功

./mysql -uroot -p -S /home/devops/mysql4308/mysqld.sock
mysql> status
--------------
./mysql  Ver 14.14 Distrib 5.5.39-36.0, for Linux (x86_64) using readline 5.1

....
Server version:         5.5.39-36.0-log Percona Server (GPL), Release 36.0, Revision 697
....

可以看到版本是 5.5.39-36.0的了。

Percona Server 5.1.61 升级到 MySQL 5.5.36

可能是因为 Percona 和 MySQL 对于系统表空间的解读方式不一致,我在升级以后,发现无法用 MySQL 5.5.36 来启动 Percona Server 5.1.61 的实例。错误日志提示的是 共享表空间无法打开,暂时先不这么跨软件升级,以后闲的时候可以再看看两者的区别。

目前只是知道 Percona 对 MySQL 做了一些性能上的优化与拓展。

Percona5.1.txt

[client]
port            = 4308
socket          = /home/devops/mysql4308/mysqld.sock

[mysqld_safe]
user            = devops
nice            = 0
#ledir           = /home/devops/percona/percona5.5.39/bin
ledir           = /home/devops/Percona-Server-5.1.61/libexec
#ledir          = /home/mysql/
#mysqld         = @home_mysql_mysql_libexec_mysqld

[mysqld]
server-id               = 2949
bind-address            = localhost
port                    = 4308
pid-file                = /home/devops/mysql4308/mysqld.pid
socket                  = /home/devops/mysql4308/mysqld.sock
basedir                 = /home/devops/percona/Percona-Server-5.1.61
datadir                 = /home/devops/mysql4308
innodb_data_home_dir    = /home/devops/mysql4308
innodb_log_group_home_dir       = /home/devops/mysql4308
tmpdir                  = /home/devops/mysql4308
log-error               = /home/devops/mysql4308/mysqld.log
slow_query_log          = 2
slow_query_log_file     = /home/devops/mysql4308/mysql-slow.log
log_bin                 = /home/devops/mysql4308/mysql-bin.log
binlog_format           = MIXED
relay-log               = mysqld-relay-bin

user                    = devops
language                = /home/devops/Percona-Server-5.1.61/share/mysql/english
#lc-messages-dir                =/home/devops/percona/percona5.5.39/share
table_cache             = 512
long_query_time         = 5
max_connections         = 300
query_cache_type        = 0
character-set-server    = utf8
#default-character-set   = utf8
default-storage-engine  = innodb
skip-external-locking
expire_logs_days        = 7
max_binlog_size         = 100M
max_allowed_packet      = 16M

# innodb plugin

innodb_buffer_pool_size = 256M
innodb_data_file_path   = ibdata1:64M:autoextend
innodb_autoextend_increment     = 16
innodb_log_files_in_group       = 2
innodb_log_file_size    = 64M
innodb_lock_wait_timeout        = 5
innodb_flush_method     = O_DIRECT
innodb_flush_log_at_trx_commit    = 0
innodb_file_per_table      = 1
innodb_file_format         = Barracuda
innodb_file_format_check         = ON
#innodb_adaptive_checkpoint = estimate
#innodb_expand_import       = 1
innodb_read_io_threads     = 8
#innodb_stats_method        = nulls_unequal
#innodb_strict_mode         = 1
innodb_thread_concurrency  = 12
innodb_write_io_threads    = 3
innodb_read_io_threads     = 3
innodb_io_capacity         = 200
#innodb_adaptive_flushing   = false

# percona
innodb_page_size=8k
#innodb_extra_rsegments=8
#innodb_use_purge_thread=4
#innodb_stats_update_need_lock=0
#innodb_fast_checksum=1
#log_slow_verbosity=full
#userstat_running=1
#enable_query_response_time_stats=1

# percona For SSD
#innodb_adaptive_checkpoint=3
#innodb_flush_neighbor_pages=0

[mysqldump]
quick
quote-names
max_allowed_packet      = 16M
default-character-set   = utf8

[mysql]
default-character-set = utf8

Percona5.5.txt

时间: 2024-10-03 03:02:28

MySQL 升级详细步骤 (包括 Percona)的相关文章

mysql安装详细步骤图解

本文转自http://blog.csdn.net/fanyunlei/article/details/21454645 别看图多,其实mysql的安装十分简单,一路next即可,只是注意倒数第三步,设定root管理员密码的时候,一定要记住即可. 下面的是MySQL安装的图解,用的可执行文件安装的,详细说明了一下!打开下载的mysql安装文件mysql-5.0.27-win32.zip,双击解压缩,运行“setup.exe”,出现如下界面 mysql安装图文教程1   mysql安装向导启动,按“

Linux下python安装升级详细步骤 | Python2 升级 Python3 转载

Linux下python升级步骤  Python2 ->Python3 多数情况下,系统自动的Python版本是2.x 或者yum直接安装的也是2.x 但是,现在多数情况下建议使用3.x 那么如何升级呢? 下面老徐详细讲解升级步骤: 首先下载源tar包 可利用linux自带下载工具wget下载,如下所示: wget http://www.python.org/ftp/python/3.3.0/Python-3.3.0.tgz 下载完成后到下载目录下,解压 tar -xzvf Python-3.3

Linux下python安装升级详细步骤 | Python2 升级 Python3

Linux下python升级步骤  Python2 ->Python3 多数情况下,系统自动的Python版本是2.x 或者yum直接安装的也是2.x 但是,现在多数情况下建议使用3.x 那么如何升级呢? 下面老徐详细讲解升级步骤: 首先下载源tar包 可利用linux自带下载工具wget下载,如下所示: wget http://www.python.org/ftp/python/3.3.0/Python-3.3.0.tgz 下载完成后到下载目录下,解压 tar -xzvf Python-3.3

win7下Tomcat 7.0 发布jsp web(Mysql)项目详细步骤

1.首先安装一个适合jsp的运行环境. JDK+Tomcat. 1)首先安装Java运行环境.(建议默认路径安装) 链接:http://pan.baidu.com/s/1ntiU6NJ 密码:hs57 2)安装JDK(建议默认路径安装) 链接:http://pan.baidu.com/s/1c0nqCRA 密码:4xdw 3)安装Tomcat 链接:http://pan.baidu.com/s/1eQ8RpOe 密码:432d 4)配置环境变量 a.“计算机”右键“属性”——“高级系统设置”——

配置MySQL数据库详细步骤

一.配置MySQL数据库 1.解压绿色版mysql,如下图 二.安装服务 1.运行cmd(管理员版本,否则没有权限),如下图 2.运行命令mysqld –install安装服务,如下图: 如果不需要mysql里,只需要运行mysqld –remove即可移除,如下图 3.运行net start mysql 启动服务,如下图 如需要配置是否开机启动mysql可以在windows服务里面配置. 三.客户端测试 1.mysql –uroot –p 如下图 四.配置编码为UTF-8 1.在mysql5.

linux系统下实现mysql热备份详细步骤(mysql主从复制)

主从的作用: 1.可以当做一种备份方式 2.用来实现读写分离,缓解一个数据库的压力 MySQL主从备份原理: Mysql的主从复制至少是需要两个Mysql的服务,当然Mysql的服务是可以分布在不同的服务器上,也可以在一台服务器上启动多个服务. 如果想配置成为同一台上的话,注意安装的时候,选择两个不同的prefix=路径,同时开启服务器的时候,端口不能相同. (1)首先确保主从服务器上的Mysql版本相同(做主从服务器的原则是,MYSQL版本要相同,如果不能满足,最起码从服务器的MYSQL的版本

windows10上安装mysql(详细步骤)

环境:windwos 10(1511) 64bit.mysql 5.7.14 时间:2016年9月5日 一.下载mysql 1. 在浏览器里打开mysql的官网http://www.mysql.com/ 2. 进入页面顶部的"Downloads" 3. 打开页面底部的“Community(GPL) Downloads” 4. 在页面中间的位置找到我们windows上要用的下载页面“MySQL on Windows(Installer & Tools)” 5. 选择第一项&quo

centOS下安装mysql workbench详细步骤

step0:安装mysql 在按照workbench之前,先安装mysql.指令是 yum install mysql mysql-server mysql-libs mysql-server 关于mysql各个包的功能是: “mysql for the client tools, mysql-server for the server and associated tools, and mysql-libs for the libraries. The libraries are requir

LAMP----linux+apache+mysql+php详细安装步骤之一APACHE篇(openldap等)

LAMP----linux+apache+mysql+php详细安装步骤之一APACHE篇(openldap等) linux详细版本为RHEL5.3 [[email protected] mail]# uname -a Linux localhost.localdomain 2.6.18-128.el5 #1 SMP Wed Dec 17 11:42:39 EST 2008 i686 i686 i386 GNU/Linux 1.上传apache源代码文件 httpd-2.2.13.tar.bz2