mysql版本升级

mysql版本升级,第1张

概述MYSQL 升级方式有两种,一种叫做In-place Upgrade,另一种叫logical upgrade(逻辑升级方式)。 Logical upgrade:利用mysqldump直接导出sql文件

MysqL 升级方式有两种,一种叫做In-place Upgrade,另一种叫logical upgrade(逻辑升级方式)。

Logical upgrade:利用MysqLdump直接导出sql文件,然后倒入到新库中,适用于跨度大的版本的升级方案,做法相对安全,并能整理表中碎片。但如果有数据量较大的库需要MysqLdump导出,时间就会很长。

In-place upgrade:他的工作方法简单快速,就是直接替换掉原来版本的MysqL的安装目录和my.cnf配置文件,利用MysqL_upgrade 脚本来完成系统表的升级。

注意:跨小版本升级可以使用in-place这种方法。

1、in-place upgrade

1.1.     环境介绍

IP: 172.16.10.22

数据目录:/mydata/MysqL/MysqL3306/data

安装目录:/usr/local/MysqL5.6

配置文件:/etc/my3306.cnf

当前版本:5.6.38

1.2.     升级(5.6.38升级到5.7.20)

a)    设置INNODB_FAST_SHUTDOWN参数设置为0

set global innodb_fast_shutdown=0;

 

innodb_fast_shutdown有0,1,2三个值。参数0代表MysqL关闭,innodb需要完成所有full purge和merge insert buffer *** 作,这个过程需要一定的时间,有事可能会花上几个小时。参数值为1是该参数的默认值,表示关闭MysqL时不完成full purge和merge insert buffer *** 作,但是缓冲池中的脏页还是会写到磁盘中。参数值为2时,表示既不完成full purge和merge insert buffer *** 作,也不将缓冲池中的脏页刷新到磁盘,而是将日志写入到日志文件中。

b)   关闭MysqL服务

MysqLadmin -S /tmp/MysqL3306.sock -uroot -pMysqL shutdown

 

c)    替换MysqL的安装文件和参数以及路径

cp /soft/MysqL-5.7.20-linux-glibc2.12-x86_64.tar.gz /usr/local/

tar -zxvf MysqL-5.7.20-linux-glibc2.12-x86_64.tar.gz

unlink MysqL5.6

ln -s MysqL-5.7.20-linux-glibc2.12-x86_64 MysqL5.7

mv /etc/my3306.cnf /etc/my3306.cnf.bak

vi /root/.bash_profile

export PATH=$PATH:/usr/local/MysqL5.7/bin

source /root/.bash_profile

cd /mydata/MysqL/

mv MysqL3306 MysqL3307

由于我的数据文件路径是:/mydata/MysqL/MysqL3306/data

现在需要修改成:

/mydata/MysqL/MysqL3307/data

设置新的my3307.cnf文件(具体情况具体修改):

[clIEnt]

port = 3307

socket = /tmp/MysqL5.7.sock

[MysqL]

prompt="\u@db \R:\m:\s [\d]> "

no-auto-rehash

[MysqLd]

user = MysqL

port = 3307

basedir = /usr/local/MysqL5.7

datadir = /mydata/MysqL/MysqL3307/data

log_bin_trust_function_creators=1

socket = /tmp/MysqL3307.sock

lower_case_table_names=1

character-set-server = utf8mb4

skip_name_resolve = 1

innodb_undo_log_truncate=1

open_files_limit = 65535

back_log = 1024

max_connections = 500

max_connect_errors = 1000000

table_open_cache = 1024

table_deFinition_cache = 1024

table_open_cache_instances = 64

thread_stack = 512K

external-locking = FALSE

max_allowed_packet = 32M

sort_buffer_size = 4M

join_buffer_size = 4M

thread_cache_size = 768

query_cache_size = 0

query_cache_type = 0

interactive_timeout = 600

wait_timeout = 600

tmp_table_size = 32M

max_heap_table_size = 32M

slow_query_log = 1

slow_query_log_file = /mydata/MysqL/MysqL3307/logs/slow.log

log-error = /mydata/MysqL/MysqL3307/logs/error.log

long_query_time = 0.1

server-ID = 3307101

log-bin = /mydata/MysqL/MysqL3307/logs/MysqL-binlog

sync_binlog = 1

binlog_cache_size = 4M

max_binlog_cache_size = 1G

max_binlog_size = 1G

expire_logs_days = 7

master_info_repository = table

relay_log_info_repository = table

gtID_mode = on

enforce_gtID_consistency = 1

log_slave_updates

binlog_format = row

relay_log_recovery = 1

relay-log-purge = 1

key_buffer_size = 32M

read_buffer_size = 8M

read_rnd_buffer_size = 4M

bulk_insert_buffer_size = 64M

lock_wait_timeout = 3600

explicit_defaults_for_timestamp = 1

innodb_thread_concurrency = 0

innodb_sync_spin_loops = 100

innodb_spin_wait_delay = 30

transaction_isolation = REPEAtable-READ

innodb_buffer_pool_size = 1024M

innodb_buffer_pool_instances = 8

innodb_buffer_pool_load_at_startup = 1

innodb_buffer_pool_dump_at_shutdown = 1

innodb_data_file_path = ibdata1:1G:autoextend

innodb_flush_log_at_trx_commit = 1

innodb_log_buffer_size = 32M

innodb_log_file_size = 2G

innodb_log_files_in_group = 2

innodb_max_undo_log_size = 4G

innodb_io_capacity = 2000

innodb_io_capacity_max = 4000

innodb_flush_neighbors = 0

innodb_write_io_threads = 8

innodb_read_io_threads = 8

innodb_purge_threads = 4

innodb_page_cleaners = 4

innodb_open_files = 65535

innodb_max_dirty_pages_pct = 50

innodb_flush_method = O_DIRECT

innodb_lru_scan_depth = 4000

innodb_checksum_algorithm = crc32

innodb_lock_wait_timeout = 10

innodb_rollback_on_timeout = 1

innodb_print_all_deadlocks = 1

innodb_file_per_table = 1

innodb_online_alter_log_max_size = 4G

internal_tmp_disk_storage_engine = InnoDB

innodb_stats_on_Metadata = 0

innodb_status_file = 1

innodb_status_output = 0

innodb_status_output_locks = 0

performance_schema = 1

performance_schema_instrument = '%=on'

#innodb monitor

innodb_monitor_enable="module_innodb"

innodb_monitor_enable="module_server"

innodb_monitor_enable="module_dml"

innodb_monitor_enable="module_ddl"

innodb_monitor_enable="module_trx"

innodb_monitor_enable="module_os"

innodb_monitor_enable="module_purge"

innodb_monitor_enable="module_log"

innodb_monitor_enable="module_lock"

innodb_monitor_enable="module_buffer"

innodb_monitor_enable="module_index"

innodb_monitor_enable="module_ibuf_system"

innodb_monitor_enable="module_buffer_page"

innodb_monitor_enable="module_adaptive_hash"

[MysqLdump]

quick

max_allowed_packet = 32M

d)   启动MysqL服务

启动过程需要加上 --skip-grant-tables和--skip-networking 参数,来保证没有任何的应用连接,让升级过程更加安全。

/usr/local/MysqL5.7/bin/MysqLd_safe --defaults-file=/etc/my3307.cnf --skip-grant-tables --skip-networking &

 

错误日志很多报错:

 

证明系统没有升级系统表信息。

e)   升级系统数据字典信息

/usr/local/MysqL5.7/bin/MysqL_upgrade -S /tmp/MysqL3307.sock

 

没有报错表示系统表升级成功。

f)   正常启动MysqL不使用--skip-grant-tables和--skip-networking 参数

/usr/local/MysqL5.7/bin/MysqLadmin -S /tmp/MysqL3307.sock -uroot -pMysqL shutdown

/usr/local/MysqL5.7/bin/MysqLd_safe --defaults-file=/etc/my3307.cnf &

/usr/local/MysqL5.7/bin/MysqL -S /tmp/MysqL3307.sock -uroot -pMysqL

 

查看sys库也存在:

 

2、logical upgrade

第二种办法多用于跨度大的版本升级,我一般是用于一台服务器迁移到另一台服务器:

例如,我从5.1.72升级到5.7.20

首先利用MysqLDUMP 出数据库文件,由于版本差距太大,我把导出的sql文件引擎全部换成INNODB。

在5.1.72库上执行:

MysqL -S /tmp/MysqL.sock  -uroot -p smsdbtest > /soft/smsdbtest.sql

把导出的文件传到安装的5.7.20库上进行导入:

 

导入:

MysqL -S /tmp/MysqL3307.sock -uroot -p smsdbtest < /soft/smsdbtest.sql

 

导入成功,并进行检查。

总结

以上是内存溢出为你收集整理的mysql版本升级全部内容,希望文章能够帮你解决mysql版本升级所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1169355.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存