【最佳实践】MySQL数据库迁移到PXC集群

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 借本次数据库迁移实践,再次总结一下MySQL数据库迁移到PXC的最佳操作路径。

借本次数据库迁移实践,再次总结一下MySQL数据库迁移到PXC的最佳操作路径。
1、源数据库配置 xtrabackup 工具,快速备份源数据到nfs;
2、目的数据库集群配置最新版本的 MySQL PXC 集群软件;
3、目的数据库集群节点 node1 采用 xtrabackup 导入备份数据;
4、使用合适的配置文件在 node1 拉起数据库;
5、node2 加入集群,node3 加入集群。
以上1、2步比较简单,在此略过,以下强调后面的步骤,请项目参考使用。

三、node1 导入备份数据

■ 准备数据路径

mkdir -p /u01/mysql/data
mkdir -p /u01/mysql/tmp
chown -R mysql.mysql /u01/mysql

■ 删除datadir所有文件

DATADIR=/u01/mysql/data
cd ${DATADIR}
rm -rf *

■ 设置环境变量

USER=root
PASSWORD='passwd'
FULL_DIR=/u01/mysqlbak/2023-10-18/
PARALLEL=10

■ 准备全量备份的日志

LOG_FILE=/tmp/prepareAll_`date +"%Y%m%d-%H%M"`.log
xtrabackup --prepare --apply-log-only --parallel=${PARALLEL} --target-dir=${FULL_DIR} > ${LOG_FILE} 2>&1 &

【耗时】8分钟,573G

■ 全备份准备

LOG_FILE=/tmp/prepareLast_`date +"%Y%m%d-%H%M"`.log
xtrabackup --prepare --parallel=${PARALLEL} --target-dir=${FULL_DIR} > ${LOG_FILE} 2>&1 &

【耗时】4分钟,573G

■ 拷回数据

LOG_FILE=/tmp/copyback_`date +"%Y%m%d-%H%M"`.log
xtrabackup --user=${USER} --password=${PASSWORD} --copy-back --parallel=${PARALLEL} --target-dir=${FULL_DIR} > ${LOG_FILE} 2>&1 &

【耗时】34分钟,573G

四、node1 拉起数据库

■ 修改数据目录权限和属性

chown -R mysql:mysql ${DATADIR}

■ 启动

注意,此时需事先配置数据库参数文件

systemctl start mysql@bootstrap

五、node2 加入集群

只要配置好合适的配置文件,node2 加入集群非常简单,只需执行启动命令:

systemctl start mysql

此时查看 node1、node2 的数据库日志,可以看到双方角色的变换,node1 作为 DONOR 通过 SST 将数据全量同步给了 node2,之后 node2 成功加入集群。

六、node3 加入集群

七、PXC配置文件是本次实践的重点内容

需确保源数据库的配置参数与新集群的配置参数合理组合。

node1

[root@node1:1 /u01]# cat /etc/my.cnf

[client]
socket = /u01/mysql/mysql.sock

[mysqld]
datadir = /u01/mysql/data/
tmpdir = /u01/mysql/tmp/
binlog_expire_logs_seconds=604800
socket = /u01/mysql/mysql.sock
log-error=/var/log/mysqld.log
gtid_mode = on
enforce_gtid_consistency = on
log-bin = mysql-bin
binlog_format = row
lower_case_table_names=1
innodb_file_per_table=1
innodb_strict_mode=0
user=mysql
default-storage-engine=INNODB
symbolic-links=0
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 64M
innodb_buffer_pool_size = 50G
innodb_thread_concurrency = 8
innodb_log_file_size = 512M
innodb_log_files_in_group=8
secure_file_priv=''
local_infile = 1
max_connections=2000
max_connect_errors=100
default-time-zone='+08:00'
log_timestamps=SYSTEM
innodb_thread_concurrency=128
innodb_read_io_threads=16
innodb_write_io_threads=16
transaction-isolation=READ-COMMITTED
general-log=1
general-log-file=/u01/mysql/mysqllog.log
long_query_time = 10
slow_query_log = 1
slow_query_log_file=/u01/mysql/myslow.log

wsrep_provider=/usr/lib64/galera4/libgalera_smm.so
wsrep_slave_threads=8
wsrep_log_conflicts
innodb_autoinc_lock_mode=2

server_id = 86
wsrep_cluster_address=gcomm://[2409:8002:5a06:120:10:0:2:c056]:4567,[2409:8002:5a06:120:10:0:2:c057]:4567,[2409:8002:5a06:120:10:0:2:c058]:4567
wsrep_node_address=[2409:8002:5a06:120:10:0:2:c056]:4567
wsrep_node_incoming_address=[2409:8002:5a06:120:10:0:2:c056]:3306
wsrep_sst_receive_address=[2409:8002:5a06:120:10:0:2:c056]:4444
wsrep_cluster_name=pxc-cluster-tjyd-zqzc
pxc_strict_mode=ENFORCING
wsrep_sst_method=xtrabackup-v2
pxc_encrypt_cluster_traffic=OFF
wsrep_provider_options="gmcast.listen_addr=tcp://[2409:8002:5a06:120:10:0:2:c056]:4567;ist.recv_addr=tcp://[2409:8002:5a06:120:10:0:2:c056]:4568"

node2

[root@node2:1 /u01]# cat /etc/my.cnf

前面部分同node1

server_id = 87
wsrep_cluster_address=gcomm://[2409:8002:5a06:120:10:0:2:c056]:4567,[2409:8002:5a06:120:10:0:2:c057]:4567,[2409:8002:5a06:120:10:0:2:c058]:4567
wsrep_node_address=[2409:8002:5a06:120:10:0:2:c057]:4567
wsrep_node_incoming_address=[2409:8002:5a06:120:10:0:2:c057]:3306
wsrep_sst_receive_address=[2409:8002:5a06:120:10:0:2:c057]:4444
wsrep_cluster_name=pxc-cluster-tjyd-zqzc
pxc_strict_mode=ENFORCING
wsrep_sst_method=xtrabackup-v2
pxc_encrypt_cluster_traffic=OFF
wsrep_provider_options="gmcast.listen_addr=tcp://[2409:8002:5a06:120:10:0:2:c057]:4567;ist.recv_addr=tcp://[2409:8002:5a06:120:10:0:2:c057]:4568"

node3

类似 node2,此处略过

IPv6支持

以上配置文件可见,PXC集群已配置了集群内外部的IPv6支持。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
18天前
|
关系型数据库 MySQL 数据库
|
22天前
|
SQL 存储 监控
SQL数据库安装指南:步骤详解与最佳实践
安装和配置SQL数据库可能是一个复杂的过程,但通过遵循本文提供的详细步骤和最佳实践,您可以确保数据库的成功安装和高效运行。无论您是初学者还是经验丰富的数据库管理员,掌握SQL数据库的安装和管理技能都是至关重要的。通过不断学习和实践,您将能够更好地利用SQL数据库来支持您的业务需求和数据分析工作。记住,定期维护和优化数据库是保证其长期性能和稳定性的关键。祝您在安装和配置SQL
|
4天前
|
负载均衡 算法 关系型数据库
MySQL集群如何实现负载均衡?
【8月更文挑战第16天】MySQL集群如何实现负载均衡?
20 6
|
4天前
|
存储 负载均衡 关系型数据库
MySQL集群
【8月更文挑战第16天】MySQL集群
15 5
|
4天前
|
SQL 负载均衡 关系型数据库
*配置MySQL集群
【8月更文挑战第16天】*配置MySQL集群
12 2
|
17天前
|
安全 关系型数据库 MySQL
|
5天前
|
关系型数据库 MySQL Serverless
在部署云数据库PolarDB MySQL版 Serverless集群的过程中问题点
在部署PolarDB MySQL Serverless过程中,常见问题包括配置误解、网络配置错误、资源未及时释放及压测不熟练。建议深入理解配置项,确保合理设置伸缩策略;明确业务需求,使PolarDB与现有服务同处一地域与VPC;利用提醒功能管理资源生命周期;按官方指南执行压测。新用户面临的学习曲线、资源管理自动化不足及成本控制难题,可通过增强文档友好性、引入智能成本管理与用户界面优化来改善。
19 1
|
5天前
|
JSON NoSQL Ubuntu
在Ubuntu 14.04上如何备份、恢复和迁移MongoDB数据库
在Ubuntu 14.04上如何备份、恢复和迁移MongoDB数据库
14 1
|
8天前
|
SQL 关系型数据库 MySQL
Nacos 1.2.1 集群搭建(二)MySQL、cluster 配置
Nacos 1.2.1 集群搭建(二)MySQL、cluster 配置
26 1
|
25天前
|
关系型数据库 MySQL 数据库

推荐镜像

更多