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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

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


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》主

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

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

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


     本文转自andylhz 51CTO博客,原文链接:http://blog.51cto.com/andylhz2009/1844007,如需转载请自行联系原作者



相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
11天前
|
关系型数据库 MySQL 数据库
mysql卸载、下载、安装(window版本)
mysql卸载、下载、安装(window版本)
|
1月前
|
运维 Linux Apache
LAMP架构调优(一)——隐藏Apache版本信息
LAMP架构调优(一)——隐藏Apache版本信息
16 1
|
1月前
|
网络协议 Linux
Linux DNS服务详解——DNS主从架构配置
Linux DNS服务详解——DNS主从架构配置
407 4
|
30天前
|
关系型数据库 MySQL 数据库
django4版本提示 django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26)
在学习Django时,用户遇到`django.db.utils.NotSupportedError`,提示需要MySQL 8.0.25或更高版本,但其系统上是5.7.26。为解决这个问题,用户决定不升级MySQL,而是选择注释掉Django源码中的数据库版本检查。通过Python命令行找到Django安装路径,进入`db/backends/base/base.py`,注释掉`self.check_database_version_supported()`函数
96 0
|
21天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
94 0
|
21天前
|
存储 Java 应用服务中间件
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
42 0
|
21天前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
66 0
|
21天前
|
SQL 关系型数据库 MySQL
【MySQL技术之旅】(7)总结和盘点优化方案系列之常用SQL的优化
【MySQL技术之旅】(7)总结和盘点优化方案系列之常用SQL的优化
36 1
|
1月前
|
Web App开发 监控 应用服务中间件
全新架构!日志服务 SLS 自研免登录方案发布
全新架构!日志服务 SLS 自研免登录方案发布
87432 7
|
1月前
|
架构师 算法 关系型数据库
数据库架构师之道:MySQL安装与系统整合指南
数据库架构师之道:MySQL安装与系统整合指南
44 0