阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

实例:同步阿里云RDS库到自建mysql库

205次阅读
没有评论

共计 7737 个字符,预计需要花费 20 分钟才能阅读完成。

本例环境为 Mysql5.6

阿里云 RDS / Mysql 5.6

本地环境 Ubuntu 14.04 / Mysql 5.6

安装 Percona Xtrabackup
wget https://repo.percona.com/apt/percona-release_0.1-5.$(lsb_release -sc)_all.deb
dpkg -i percona-release_0.1-5.$(lsb_release -sc)_all.deb
apt-get update
apt-get install percona-xtrabackup-24
安装 mysql 服务和客户端
apt-get install mysql-server-5.6 mysql-client-5.6
 /etc/init.d/mysql stop
下载 RDS 数据库备份文件
wget -c '' -O .tar.gz
解压备份文件(本例以 /home/mysql/data 目录为例,请自行修改)
bash rds_backup_extract.sh -f .tar.gz -C /home/mysql/data
恢复解压好的文件
innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
修改 backup-my.cnf 参数
vim /home/mysql/data/backup-my.cnf

# This MySQL options file was generated by >>innobackupex.
# The MySQL server
[mysqld]
innodb_checksum_algorithm=innodb
#innodb_log_checksum_algorithm=innodb
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=1048576000
#innodb_fast_checksum=false
innodb_page_size=16384
#innodb_log_block_size=512
innodb_undo_directory=.
innodb_undo_tablespaces=0
#rds_encrypt_data=false
#innodb_encrypt_algorithm=aes_128_ecb
修改文件属主
chown -R mysql:mysql /home/mysql/data
启动 MySQL 进程
mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data
登录 MySQL 数据库进行修改
mysql -uroot

mysql>delete from mysql.db where user'root' and char_length(user)>0;delete from mysql.tables_priv where user'root' and char_length(user)>0;flush privileges;
mysql>use mysql;
mysql>drop table slave_master_info;
mysql>drop table slave_relay_log_info;
mysql>drop table slave_worker_info;
mysql>drop table innodb_index_stats;
mysql>drop table innodb_table_stats;
mysql>source /usr/share/mysql/mysql_system_tables.sql
mysql>quit
mysqladmin shutdown
修改 my.cnf(把 backup-my.cnf 参数复制到 my.cnf)
vim /etc/mysql/my.cnf

[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0

[mysqld]

user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /home/mysql/data
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
myisam-recover = BACKUP
log_error = /var/log/mysql/error.log
#阿里云 RDS 优化配置
auto_increment_increment = 1
auto_increment_offset = 1
back_log = 3000
binlog_cache_size = 1M
binlog_checksum = CRC32
binlog_row_image = full
binlog_stmt_cache_size = 32768
character_set_server = utf8
concurrent_insert = 1
connect_timeout = 10
default_storage_engine = InnoDB
default_time_zone = SYSTEM
default_week_format = 0
delayed_insert_limit = 100
delayed_insert_timeout = 300
delayed_queue_size = 1000
delay_key_write = ON
div_precision_increment = 4
eq_range_index_dive_limit = 10
explicit_defaults_for_timestamp = false
ft_min_word_len = 4
ft_query_expansion_limit = 20
group_concat_max_len = 1024
innodb_adaptive_hash_index = ON
innodb_additional_mem_pool_size = 2097152
innodb_autoinc_lock_mode = 1
innodb_concurrency_tickets = 500
innodb_ft_max_token_size = 84
innodb_ft_min_token_size = 3
innodb_large_prefix = 0
innodb_lock_wait_timeout = 50
innodb_max_dirty_pages_pct = 75
innodb_old_blocks_pct = 37
innodb_old_blocks_time = 0
innodb_online_alter_log_max_size = 134217728
innodb_open_files = 300
innodb_print_all_deadlocks = OFF
innodb_purge_batch_size = 20
innodb_purge_threads = 1
innodb_read_ahead_threshold = 56
innodb_read_io_threads = 4
innodb_rollback_on_timeout = OFF
innodb_stats_method = nulls_equal
innodb_stats_on_metadata = OFF
innodb_stats_sample_pages = 8
innodb_strict_mode = OFF
innodb_table_locks = ON
innodb_thread_concurrency = 0
innodb_thread_sleep_delay = 10000
innodb_write_io_threads = 4
interactive_timeout = 7200
key_cache_age_threshold = 300
key_cache_block_size = 1024
key_cache_division_limit = 100
log_queries_not_using_indexes = OFF
long_query_time = 1
#loose_max_statement_time = 0
#loose_rds_indexstat = OFF
#loose_rds_max_tmp_disk_space = 10737418240
#loose_rds_tablestat = ON
#loose_rds_threads_running_high_watermark = 50000
#loose_tokudb_buffer_pool_ratio = 0
lower_case_table_names = 1
low_priority_updates = 0
max_allowed_packet = 1024M
max_connect_errors = 20
max_length_for_sort_data = 1024
max_prepared_stmt_count = 16382
max_write_lock_count = 102400
myisam_sort_buffer_size = 262144
net_read_timeout = 30
net_retry_count = 10
net_write_timeout = 60
open_files_limit = 65535
performance_schema = OFF
query_alloc_block_size = 8192
query_cache_limit = 1048576
query_cache_size = 0
query_cache_type = 1
query_cache_wlock_invalidate = OFF
query_prealloc_size = 8192
#rds_reset_all_filter = 0
slow_launch_time = 2
sql_mode =
table_definition_cache = 512
table_open_cache = 2000
thread_stack = 262144
tmp_table_size = 262144
transaction_isolation = READ-COMMITTED
wait_timeout = 86400
#优化结束
#GTID 设置
server-id = 148
log-bin = mysql.bin
log-bin-index = mysql-bin.index
log-slave-updates = 1
skip_slave_start = 1
relay-log = relay-log
relay_log_index = relay-log.index
expire_logs_days = 0
max_binlog_size = 500M
default-storage-engine=INNODB
master-info-repository=TABLE
relay-log-info_repository=TABLE
binlog-format=ROW
gtid-mode=on
enforce-gtid-consistency=true
#backup-my.cnf 参数
innodb_checksum_algorithm=innodb
#innodb_log_checksum_algorithm=innodb
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=1048576000
#innodb_fast_checksum=false
innodb_page_size=16384
#innodb_log_block_size=512
innodb_undo_directory=.
innodb_undo_tablespaces=0
#backup-my.cnf 结束
replicate-ignore-db=mysql
replicate-ignore-db=test
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-do-db=db1
replicate-do-db=db2
#GTID 结束
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]

[isamchk]

key_buffer = 16M
!includedir /etc/mysql/conf.d/

注:my.cnf 的参数可以参考 RDS 的参数,我这里是照搬,请自己对照情况进行修改。

设置 slave(请先在 rds 控制台创建一个用来同步的账户,建议只读)
/etc/init.d/mysql/restart
cat /home/data/mysql/xtrabackup_slave_info

# 文件里面就两段字,复制下来,待会用到。

mysql -uroot

mysql>SET GLOBAL gtid_purged='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:1-123456';
mysql>CHANGE MASTER TO MASTER_HOST='RDS 外网地址', MASTER_PORT=3306, MASTER_USER='RDS 同步账号', MASTER_PASSWORD='RDS 同步密码', MASTER_AUTO_POSITION=1;
mysql>START SLAVE;
mysql>SHOW SLAVE STATUS G

问题解答

首次启动数据库出现如下提示
[ERROR] InnoDB: ./ibdata1 can't be opened in read-write mode
[ERROR] InnoDB: The system tablespace must be writable!
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
[ERROR] Aborting

PS:重启服务器即可,删除 ib* 什么的不管用。

unknown variable ‘xxxx’
[ERROR]/usr/sbin/mysqld: unknown variable 'xxxx'

PS: 到 my.cnf 里面注释 xxxx

Table ‘./mysql/xxx’ 报错
[ERROR] /usr/sbin/mysqld: Table './mysql/db' is marked as crashed and should be repaired
[Warning] Checking table: './mysql/db'
[ERROR] 1 client is using or hasn't closed the table properly
[ERROR] /usr/sbin/mysqld: Table './mysql/event' is marked as crashed and should be repaired
[Warning] Checking table: './mysql/event'
[ERROR] 1 client is using or hasn't closed the table properly

PS:使用 myisamchk -c -r /home/mysql/data/db/tablesname.MYI 修复即可

information that should help you find out what is causing the crash.
It is possible that mysqld could use up to key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 68104 K bytes of memory Hope that's ok; if not, decrease some variables in the equation.
Thread pointer: 0xxxxxxxxxxxxx
Attempting backtrace. You can use the following information to find out where mysqld died. If you see no messages after this, something went
terribly wrong...

PS:… 他只是卡住了而已,my.cnf 里面部分参数设置不当,等一会就可以连了。。别问我为什么知道。。

同步时报 1236 错误
[ERROR] Error reading packet from server: The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires. (server_errno=1236)
ERROR] Slave I/O: Got fatal error 1236 from master when reading data from binary log: 'The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires.', Error_code: 1236
[ERROR] Error reading packet from server: The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires. (server_errno=1236)

PS: 重新从 RDS 获取新的备份(当前的新备份)

最后,本地 my.cnf 里面的配置,如果你不知道有些参数数值应该设置多少,可以登陆 RDS 服务器使用 show 命令进行查询,查询到的数值单位是字节,不会换算自己百度用工具换算一下就行,上文中关于 my.cnf 阿里云优化的部分,全部使用了 RDS 控制台里面的参数(导出复制进去就行,记得注释掉有 rds 的参数),RDS 里面没有的参数,你本地可以直接注释掉。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2025-02-07发表,共计7737字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19354
评论数
4
阅读量
8246105
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
云服务器部署OpenClaw:轻量应用服务器+钉钉和QQ机器人

云服务器部署OpenClaw:轻量应用服务器+钉钉和QQ机器人

  云服务器部署 OpenClaw:轻量应用服务器 + 钉钉和 QQ 机器人 一、前言 最近开源圈爆...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...