内容提纲
一、需求背景
二、环境准备
2.1 检查系统架构及版本 2.2 下载源码包 2.3 配置CentOS 8的yum源
三、安装编译依赖
四、编译Percona Xtrabackup
五、在ARM下初始化安装MySQL
5.1 初始化 5.2 配置文件 5.3 启动MySQL
六、登录并使用sysbench压测数据
七、备份与恢复测试
八、增量备份及恢复
一、需求背景
查询Percona官方手册,Xtrabackup 8.0可以备份MySQL 8.0以上。
二、环境准备
由于在中标麒麟ky10系统上直接编译报gcc等错误,所以需要在ARM下准备CentOS系统。
中标麒麟ky10的内核为4.19,而CentOS 7的内核为3.xx,CentOS 8的内核为4.18,故需要在CentOS 8的操作系统进行编译,编译完成后拿到中标麒麟ky10中使用。
2.1 检查系统架构及版本
Shell> cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) Shell> uname -srm Linux 4.18.0-147.el8.aarch64 aarch64
复制
2.2 下载源码包
web下载地址:
shell操作:
Shell> cd /root Shell>wget https://github.com/percona/percona-xtrabackup/archive/refs/tags/percona-xtrabackup-8.0.25-17.tar.gz
复制
2.3 配置CentOS 8的yum源
Shell> mkdir /etc/yum.repos.d/repo.bak Shell> mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo.bak/ //检查dns是否正常 Shell> ping baidu.com //修改dns地址 Shell> vim /etc/resolv.conf Shell> curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo Shell> sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo Shell> sed -i.bak -e 's|^mirrorlist=|#mirrorlist=|' -e 's|^#baseurl=|baseurl=|' -e 's|http://mirror.centos.org|https://mirrors.aliyun.com|' /etc/yum.repos.d/CentOS-*.repo Shell> dnf makecache Shell> dnf install lrzsz
复制
三、安装编译依赖
Shell> dnf install cmake openssl-devel libaio libaio-devel automake autoconf bison libtool ncurses-devel libgcrypt-devel libev-devel libcurl-devel zlib-devel vim-common libarchive git centos-release-stream gcc-toolset-10-gcc-c++
复制
PS: 以上依赖都必须安装,否则CMake时会报依赖错误。
四、编译Percona Xtrabackup
Shell> tar xf percona-xtrabackup-percona-xtrabackup-8.0.25-17.tar.gz Shell> mv percona-xtrabackup-percona-xtrabackup-8.0.25-17 xtrbackup-8.0.25 Shell> cd xtrbackup-8.0.25 Shell>cmake -DWITH_BOOST=./include/boost_1_73_0 -DDOWNLOAD_BOOST=ON -DBUILD_CONFIG=xtrabackup_release -DWITH_MAN_PAGES=OFF -DFORCE_INSOURCE_BUILD=1 Shell> echo $? Shell> make -j4 Shell> echo $? Shell> mkdir /usr/local/xtrbackup-8.0.25 Shell> make DESTDIR=/usr/local/xtrbackup-8.0.25 install Shell> /usr/local/xtrbackup-8.0.25/usr/local Shell> tar zcf arm_ky10_xtrabackup-8.0.25.tar.gz
复制
五、在ARM下初始化安装MySQL
使用ARM下中标麒麟系统下的MySQL 8.0.25,并初始化。
PS:在ARM下中标麒麟系统编译MySQL 8.0.25请看之前文章。
5.1 初始化
Shell> chown -R mysql.mysql /usr/local/mysql/ Shell> mkdir /data/mysql/3306/{data,log,tmp,conf} -p Shell> chown -R mysql.mysql /data1/mysql/ Shell> cd /data/mysql/3306/conf Shell> vim my.cnf Shell> /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/3306/conf/my.cnf --initialize
复制
5.2 配置文件
[client] socket = /data/mysql/3306/mysql.sock default-character-set=utf8 [mysqld] basedir = /usr/local/mysql datadir = /data/mysql/3306/data port = 3306 #skip-grant-tables socket = /data/mysql/3306/mysql.sock user = mysql character_set_server=utf8 lc-messages-dir=/usr/local/mysql/share/english plugin_dir=/usr/local/mysql/lib/plugin default_authentication_plugin = mysql_native_password back_log = 5000 server-id = 1803306 log-bin = /data/mysql/3306/log/mysql-bin binlog_format = row log-error = /data/mysql/3306/log/error.log enforce_gtid_consistency = 1 expire_logs_days=15 gtid_mode = on innodb_buffer_pool_size = 200m innodb_change_buffering = all innodb_doublewrite = true innodb_file_per_table = 1 innodb_flush_log_at_trx_commit = 1 innodb_flush_method = O_DIRECT innodb_log_buffer_size = 16M innodb_log_file_size = 100m innodb_log_files_in_group = 4 innodb_print_all_deadlocks = on innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:81920M innodb_thread_concurrency = 0 interactive_timeout = 31536000 lock_wait_timeout = 600 log_bin_trust_function_creators = 1 log_timestamps = SYSTEM long_query_time = 10 lower_case_table_names = 1 master_info_repository = TABLE max_allowed_packet = 16M max_connections = 20480 max_prepared_stmt_count = 1048576 net_read_timeout = 10000 net_write_timeout = 10000 open_files_limit = 80000 skip_external_locking = 1 skip_name_resolve = 1 sort_buffer_size = 2M sync_binlog = 1 table_definition_cache = 5000 table_open_cache = 5000 thread_cache_size = 3000 tmpdir = /data/mysql/3306/tmp transaction_isolation = READ-COMMITTED wait_timeout = 31536000
复制
5.3 启动MySQL
Shell> /usr/local/mysql/bin/mysqld --defaults-file=/data1/mysql/3306/conf/my.cnf &
复制
六、登录并使用sysbench压测数据
登录修改密码:
Shell> cat /data1/mysql/3306/log/error.log |grep pass A temporary password is generated for root@localhost: JFbdzuFta1*o Shell> /usr/local/mysql/bin/mysql -uroot -p'JFbdzuFta1*o' -S /data1/mysql/3306/mysql.sock -P3306 mysql> alter user user() identified by ‘abc123’; Mysql> flush privileges;
复制
创建用户:
Shell> /usr/local/mysql/bin/mysql -uroot -p'abc123' -S /data1/mysql/3306/mysql.sock -P3306 mysql> create user pcms@'%' identified by 'pcms@123'; mysql> grant all privileges on *.* to pcms@'%'; mysql> flush privileges;
复制
创建库并使用sysbench造数据:
mysql> create database pcms; //使用sysbench造数 Shell> sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=172.16.130.180 --mysql-port=3306 --mysql-user='root' --mysql-password='abc123' --mysql-db='sbtest' --tables=10 --table-size=5000 --threads=200 prepar //检查 MySQL [sbtest]> select count(*) from sbtest1;
复制
七、备份与恢复测试
全量备份测试:
Shell> /usr/local/xtrabackup/bin/xtrabackup --defaults-file=/data/mysql/3306/conf/my.cnf --host=127.0.0.1 --user=root --password=abc123 --port=3306 --backup --target-dir=/root/backup/
复制
输出信息:
Using server version 8.0.25 210624 22:08:39 Executing LOCK INSTANCE FOR BACKUP... xtrabackup: uses posix_fadvise(). xtrabackup: cd to /data/mysql/3306/data xtrabackup: open files limit requested 80000, set to 1024000 xtrabackup: using the following InnoDB configuration: xtrabackup: innodb_data_home_dir = . xtrabackup: innodb_data_file_path = ibdata1:12M:autoextend xtrabackup: innodb_log_group_home_dir = ./ xtrabackup: innodb_log_files_in_group = 4 xtrabackup: innodb_log_file_size = 104857600 xtrabackup: using O_DIRECT Number of pools: 1 xtrabackup: inititialize_service_handles suceeded 210624 22:08:39 Connecting to MySQL server host: 127.0.0.1, user: root, password: set, port: 3306, socket: /data/mysql/3306/mysql.sock xtrabackup: Redo Log Archiving is not set up. 210624 22:08:39 >> log scanned up to (31673954) xtrabackup: Generating a list of tablespaces xtrabackup: Generating a list of tablespaces Scanning './' Completed space ID check of 2 files. Allocated tablespace ID 2 for sbtest/sbtest8, old maximum was 0 210624 22:08:42 Backup created in directory '/root/backup/' MySQL binlog position: filename 'mysql-bin.000005', position '196', GTID of the last change '4c2b3352-d4f3-11eb-8b55-52540061b4c4:1-47' 210624 22:08:42 [00] Writing /root/backup/backup-my.cnf 210624 22:08:42 [00]...done 210624 22:08:42 [00] Writing /root/backup/xtrabackup_info 210624 22:08:42 [00]...done xtrabackup: Transaction log of lsn (31673954) to (31679741) was copied. 210624 22:08:43 completed OK!
复制
全量恢复测试:
// 删掉库并将数据库关闭 Shell> mysql -uroot -p'abc123' -h'127.0.0.1' MySQL [(none)]> drop database sbtest; MySQL [(none)]> shutdown; // 准备工作 Shell> /usr/local/xtrabackup/bin/xtrabackup --host=127.0.0.1 --user=root --password=abc123 --port=3306 --prepare --target-dir=/root/backup/ Shell> mv /data/mysql/3306/data/ /data/mysql/3306/data1 Shell> mkdir /data/mysql/3306/data // 拷贝数据 Shell> /usr/local/xtrabackup/bin/xtrabackup --host=127.0.0.1 --user=root --password=abc123 --port=3306 --datadir=/data/mysql/3306/data --copy-back --target-dir=/root/backup/
复制
输出信息:
210625 02:34:36 [01] Copying ./performance_schema/keyring_componen_191.sdi to /data/mysql/3306/data/performance_schema/keyring_componen_191.sdi 210625 02:34:36 [01]...done 210625 02:34:36 [01] Copying ./ib_buffer_pool to /data/mysql/3306/data/ib_buffer_pool 210625 02:34:36 [01]...done 210625 02:34:36 [01] Copying ./xtrabackup_info to /data/mysql/3306/data/xtrabackup_info 210625 02:34:36 [01]...done 210625 02:34:36 [01] Copying ./xtrabackup_master_key_id to /data/mysql/3306/data/xtrabackup_master_key_id 210625 02:34:36 [01]...done 210625 02:34:36 [01] Copying ./ibtmp1 to /data/mysql/3306/data/ibtmp1 210625 02:34:36 [01]...done 210625 02:34:37 [01] Creating directory ./#innodb_temp 210625 02:34:37 [01] ...done. 210625 02:34:37 completed OK! // 修改目录属性启动数据库 Shell> chown -R mysql:mysql /data/mysql/3306/data Shell> chmod -R 755 /data/mysql/3306/data // 启动数据库 Shell> /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/3306/conf/my.cnf & // 检测
复制
全量恢复完成:
MySQL> select count(*) from sbtest.sbtest1;
复制
八、增量备份及恢复
略。
Enjoy GreatSQL :)
文章推荐:
扫码添加GreatSQL社区助手微信好友
发送“加群”加入GreatSQL/MGR交流群
亦可扫码加入GreatSQL/MGR交流QQ群
想看更多技术好文,点个“在看”吧!
文章转载自GreatSQL社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
数据库国产化替代深化:DBA的机遇与挑战
代晓磊
1237次阅读
2025-04-27 16:53:22
2025年4月国产数据库中标情况一览:4个千万元级项目,GaussDB与OceanBase大放异彩!
通讯员
716次阅读
2025-04-30 15:24:06
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
585次阅读
2025-04-14 09:40:20
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
498次阅读
2025-04-17 17:02:24
一页概览:Oracle GoldenGate
甲骨文云技术
473次阅读
2025-04-30 12:17:56
GoldenDB数据库v7.2焕新发布,助力全行业数据库平滑替代
GoldenDB分布式数据库
468次阅读
2025-04-30 12:17:50
优炫数据库成功入围新疆维吾尔自治区行政事业单位数据库2025年框架协议采购!
优炫软件
356次阅读
2025-04-18 10:01:22
国产数据库图谱又上新|82篇精选内容全览达梦数据库
墨天轮编辑部
272次阅读
2025-04-23 12:04:21
XCOPS广州站:从开源自研之争到AI驱动的下一代数据库架构探索
韩锋频道
262次阅读
2025-04-29 10:35:54
给准备学习国产数据库的朋友几点建议
白鳝的洞穴
260次阅读
2025-05-07 10:06:14