MySQL主从架构由5.5版本升级到5.6方案

主从架构[一主多从]升级步骤

1. 首先安装最新版本的MySQL  mysql-5.6.26.tar.gz

:每台主机分别安装目录:/usr/local/mysql-5.6

yum install libaio-devel

编译参数

/usr/local/cmake/bin/cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6 \

-DMYSQL_DATADIR=/usr/local/mysql-5.6/data \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DENABLE_LOCAL_INFILE=1 \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DEXTRA_CHARSETS=all \

-DMYSQL_TCP_PORT=3306 \

-DWITH_DEBUG=OFF \

-DWITH_READLINE=1 \

-DWITH_EMBEDDED_SERVER=1 \

-DMYSQL_UNIX_ADDR=/tmp/mysql6.sock \

-DWITH_SSL=bundled \

-DENABLE_DTRACE=OFF

make;make install

软件安装OK

2. 停止其中一个从库:

将原版本中的数据[data]目录[/usr/local/mysql]拷贝到新版本对应的目录下面[/usr/local/mysql-5.6]

cp -r /usr/local/mysql/data    /usr/local/mysql-5.6/

3. 变更权限:

chown -R root .

chown -R mysql data

4. 变更启动脚本

rm -f /etc/init.d/mysqld

cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld-5.5

cp /usr/local/mysql-5.6/support-files/mysql.server  /etc/init.d/mysqld-5.6

chmod +x  /etc/init.d/mysqld-5.*

5.启动新版本实例

注意:配置文件必须配置正确,如果配置了旧的参数,会导致实例无法启动

/etc/init.d/mysqld-5.6 start

然后观察错误文件,会看到如下报错:

2015-08-04 13:16:31 18815 [ERROR] Native table ‘performance_schema‘.‘setup_actors‘ has the wrong structure

2015-08-04 13:16:31 18815 [ERROR] Native table ‘performance_schema‘.‘setup_objects‘ has the wrong structure

2015-08-04 13:16:31 18815 [ERROR] Native table ‘performance_schema‘.‘table_io_waits_summary_by_index_usage‘ has the wrong structure

2015-08-04 13:16:31 18815 [ERROR] Native table ‘performance_schema‘.‘table_io_waits_summary_by_table‘ has the wrong structure

2015-08-04 13:16:31 18815 [ERROR] Native table ‘performance_schema‘.‘table_lock_waits_summary_by_table‘ has the wrong structure

2015-08-04 13:16:31 18815 [ERROR] Column count of mysql.threads is wrong. Expected 14, found 3. Created with MySQL 50518, now running 50626. Please use mysql_upgrade to fix this error.

2015-08-04 13:16:31 18815 [ERROR] Native table ‘performance_schema‘.‘events_stages_current‘ has the wrong structure

2015-08-04 13:16:31 18815 [ERROR] Native table ‘performance_schema‘.‘events_stages_history‘ has the wrong structure

2015-08-04 13:16:31 18815 [ERROR] Native table ‘performance_schema‘.‘events_stages_history_long‘ has the wrong structure

2015-08-04 13:16:31 18815 [ERROR] Native table ‘performance_schema‘.‘events_stages_summary_by_thread_by_event_name‘ has the wrong structure

2015-08-04 13:16:31 18815 [ERROR] Native table ‘performance_schema‘.‘events_stages_summary_by_account_by_event_name‘ has the wrong structure

2015-08-04 13:16:31 18815 [ERROR] Native table ‘performance_schema‘.‘events_stages_summary_by_user_by_event_name‘ has the wrong structure

2015-08-04 13:16:31 18815 [ERROR] Native table ‘performance_schema‘.‘events_stages_summary_by_host_by_event_name‘ has the wrong structure

6. 运行新版本下的升级脚本进行升级检查,修复mysql库中的主要表

/usr/local/mysql-5.6/bin/mysql_upgrade -u root -proot

Warning: Using a password on the command line interface can be insecure.

Looking for ‘mysql‘ as: /usr/local/mysql_5.6/bin/mysql

Looking for ‘mysqlcheck‘ as: /usr/local/mysql-5.6/bin/mysqlcheck

Running ‘mysqlcheck‘ with connection arguments: ‘--port=3306‘ ‘--socket=/tmp/mysql6.sock‘

Warning: Using a password on the command line interface can be insecure.

Running ‘mysqlcheck‘ with connection arguments: ‘--port=3306‘ ‘--socket=/tmp/mysql6.sock‘

Warning: Using a password on the command line interface can be insecure.

mysql.columns_priv                                 OK

mysql.db                                           OK

mysql.event                                        OK

mysql.func                                         OK

mysql.general_log                                  OK

mysql.help_category                                OK

mysql.help_keyword                                 OK

mysql.help_relation                                OK

mysql.help_topic                                   OK

mysql.host                                         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.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

Running ‘mysql_fix_privilege_tables‘...

Warning: Using a password on the command line interface can be insecure.

Running ‘mysqlcheck‘ with connection arguments: ‘--port=3306‘ ‘--socket=/tmp/mysql6.sock‘

Warning: Using a password on the command line interface can be insecure.

Running ‘mysqlcheck‘ with connection arguments: ‘--port=3306‘ ‘--socket=/tmp/mysql6.sock‘

Warning: Using a password on the command line interface can be insecure.

babysitter.abc                                     OK

babysitter.account_tactics_daily_availability      OK

babysitter.andtlhz_new                             OK

7. 检查完后重启实例

/etc/init.d/mysqld-5.6 restart

配置文件

[client]

#default-character-set   = utf8

port                    = 3306

socket                  = /tmp/mysql6.sock

[mysqld]

#skip-grant-tables

user                    = mysql

port                    = 3306

socket                  = /tmp/mysql6.sock

pid-file                = /usr/local/mysql-5.6/data/mysql-upgrade-master.pid

#pid-file                = /usr/local/mysql-5.6/data/[主机名].pid

#pid-file                = /usr/local/mysql-5.6/data/[主机名].pid

##################

basedir                 = /usr/local/mysql-5.6

datadir                 = /usr/local/mysql-5.6/data

server-id               = 1

#server-id               = 2  #从库1配置

#server-id               = 3  #从库2配置

log_slave_updates       = 1

log_slave_updates       = 0  #从库配置

log-bin                 = mysql-bin

#log-bin                 = mysql-bin   #从库不需要开启binlog

binlog_format           = mixed

binlog_cache_size       = 64M

max_binlog_cache_size   = 128M

expire_logs_days        = 2

max_binlog_size         = 1G

binlog-ignore-db        = mysql

binlog-ignore-db        = test

binlog-ignore-db        = information_schema

binlog-ignore-db        = performance_schema

query_cache_type =0

key_buffer_size         = 384M

sort_buffer_size        = 2M

read_buffer_size        = 2M

read_rnd_buffer_size    = 16M

join_buffer_size        = 2M

thread_cache_size       = 8

query_cache_size        = 32M

query_cache_limit       = 2M

query_cache_min_res_unit = 2K

thread_concurrency      = 32

table_open_cache        = 512

open_files_limit        = 10240

back_log                = 600

max_connections         = 5000

max_connect_errors      = 6000

external-locking        = FALSE

max_allowed_packet      = 10M

default-storage-engine  = MYISAM

thread_stack            = 192K

transaction_isolation   = READ-COMMITTED

tmp_table_size          = 256M

max_heap_table_size     = 512M

bulk_insert_buffer_size = 64M

long_query_time         = 2

slow_query_log

slow_query_log_file     = /usr/local/mysql-5.6/data/slow_query.log

skip-name-resolve

explicit_defaults_for_timestamp = true  #新版本关于时间戳的新特性配置

innodb_buffer_pool_size = 512M

innodb_data_file_path = ibdata1:256M:autoextend

innodb_file_io_threads  = 4

innodb_thread_concurrency = 8

innodb_flush_log_at_trx_commit = 2

innodb_log_buffer_size  = 16M

innodb_log_file_size    = 128M

innodb_log_files_in_group = 3

innodb_max_dirty_pages_pct = 90

innodb_lock_wait_timeout = 120

innodb_file_per_table   = 1

innodb_flush_method = O_DIRECT

[mysqldump]

quick

max_allowed_packet   = 10M

[mysql]

no-auto-rehash

safe-updates

[mysqlhotcopy]

interactive-timeout

[myisamchk]

key_buffer_size = 256M

sort_buffer_size = 256M

read_buffer = 2M

write_buffer = 2M

##################

以上操作顺序为:从1》从2》主

特别注意配置文件的正确性

磁盘空间足够存放两份旧数据的大小

旧数据不动,以防升级失败,可以回退到旧版本

时间: 2024-10-19 07:33:51

MySQL主从架构由5.5版本升级到5.6方案的相关文章

mysql-poxy 实现mysql主从架构读写分离

在高并发系统设计中,后端数据库的性能往往会成为系统的瓶颈,这时候就需要进行合理的设计,以分摊后端数据库的压力,比如在数据层前面构建缓存层.数据文件存放在RAID这样的设备.对数据进行分库分表分区存放.合理利用索引.进行数据的读写分离等.mysql-proxy提供了mysql数据库的读写分离能力,mysql-proxy通过Lua脚本能分析得出用户的sql请求,如果发现在是read请求,则会转化到master-slave模型的slave中,如果是write请求,则会转发到master中,以达到读写分

MySQL主从架构之Master-Slave主从同步

MySQL复制 MySQL复制是指将主库上的DDL和DML操作通过二进制日志传到从库上,使主库和从库上的数据保持同步 MySQL主从架构:优点:故障时候可以切库:读写分离:从库执行其他业务例如备份. 1:Master-Slave    主从同步 2:Master-Slave-Slave……级联 3:Master-Master   互为主备 [主从同步]Master-Slave 注:需要主库打开log-bin ;设置server-id #mysqldump -uroot -p --all-data

使用Innobackupex快速搭建(修复)MySQL主从架构

MySQL的主从搭建大家有很多种方式,传统的mysqldump方式是很多人的选择之一.但对于较大的数据库则该方式并非理想的选择.使用Xtrabackup可以快速轻松的构建或修复mysql主从架构.本文描述了使用innobackupex快速来搭建或修复主从架构.供大家参考. 1.基于主库做一个完整备份 # mkdir -p /log/bakforslave # innobackupex --user=root -password=*** --socket=/tmp/mysql.sock --def

MySQL 主从架构配置详解

无论是哪一种数据库,数据的安全都是至关重要的,因此熟练掌握数据库的安全备份功能,是作为开发人员,特别是后端开发人员的一项必备技能.MySQL 数据库内建的复制功能,可以帮助我们对数据进行异地备份,读写分离,在较大程度上避免数据丢失.数据库服务器压力过大甚至宕机带来的损失. 使用MySQL 主从架构一年多了,想起当年学习这些东西的时候,苦于完整的中文资料比较少,当时英文又不太好,遇到不少问题.刚好最近也有一段时间没更新博客了,心血来潮,决定翻译一下 MySQL 官网的英文文档,官网文档讲解的非常详

MySQL主从架构详解

1.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收

使用innobackupex基于从库搭建mysql主从架构

?? MySQL的主从搭建大家有很多种方式,传统的mysqldump方式是很多人的选择之一.但对于较大的数据库则该方式并非理想的选择.使用Xtrabackup可以快速轻松的构建或修复mysql主从架构.本文描述了基于现有的从库来快速搭建主从,即作为原主库的一个新从库.该方式的好处是对主库无需备份期间导致的相关性能压力.搭建过程中使用了快速流备份方式来加速主从构建以及描述了加速流式备份的几个参数,供大家参考. 有关流式备份可以参考:Xtrabackup 流备份与恢复 1.备份从库###远程备份期间

高性能Mysql主从架构的复制原理及配置详解

1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收

高性能Mysql主从架构的复制原理及配置详解(转)

温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取

转:高性能Mysql主从架构的复制原理及配置详解

温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取