技术分享 | ARM下中标麒麟系统ky10使用Xtrabackup-8.0.25
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答
一、需求背景
查询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
本文由博客一文多发平台 OpenWrite 发布!
技术分享 | ARM下中标麒麟系统ky10使用Xtrabackup-8.0.25的更多相关文章
- 虚拟机VMware,安装中标麒麟系统,64位的,版本6.0,并安装qt
为了使用qt开发,安装中标麒麟系统. 虚拟机中安装,本来安装的是32位麒麟系统,结果发现qt无法安装(官网提供的是64位的run程序). qt安装的是qt-opensource-linux-x64-5 ...
- 技术分享 | 将GreatSQL添加到系统systemd服务
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 1 ...
- [技术分享] .NET下 , 上传图片的处理方式 , 贴上代码 .
如题 , 直接上单代码 , AC代码 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8" ...
- 虚拟机安装中标麒麟桌面版7.0系统 + 升级Firefox浏览器
背景 由于公司业务(政府项目)需要走国产化路线,需要把原来已有的产品在国产的系统进行测试.目前选择的是中标麒麟系统,这是一款国产系统,界面 UI 和 window 类似,系统内核使用的是 Linux ...
- 国产中标麒麟Linux部署dotnet core 环境并运行项目 (三) 部署运行WEB API项目
部署dotnet Core Web API 上一步的文章,是我们公司最核心的一个ORM组件,在中标麒麟系统完成了一个插入数据的任务,这一步是将正式的从dot net framework 迁移到 dot ...
- 国产中标麒麟Linux部署dotnet core 环境并运行项目 (一) 安装dotnet core
背景 根据我之前写的文章 将 Net 项目升级 Core项目经验:(一)迁移Net项目为Net Core\Standard项目,我们将公司内部最核心的ORM框架迁移到net core 上面,并在win ...
- kafka技术分享02--------kafka入门
kafka技术分享02--------kafka入门 1. 消息系统 所谓的Messaging System就是一组规范,企业利用这组规范在不同的系统之间传递语义准确对的消息,实现松耦合的异步数据 ...
- 中标麒麟(龙芯CPU)--忘记root密码怎么修改?
中标麒麟桌面版和服务器版均采用GRUB2为启动器,无法通过单用户模式重置root密码.下面将介绍如何重置中标麒麟系统的root密码: 桌面版 1.修改grub2引导 在正常系统入口上按下"e ...
- 2018年1月20日上海MVP线下技术分享会纪实
1月20日正值大寒节气,在微软MVP朱兴亮的组织牵头下,上海MVP自发举办了题为<跟社区专家一起聊聊混合云.领域驱动.区块链和数字营销>的技术交流会.四名来自上海的MVP分别在自己擅长的技 ...
随机推荐
- 771. Jewels and Stones - LeetCode
Question 771. Jewels and Stones Solution 题目大意:两个字符串J和S,其中J中每个字符不同,求S中包含有J中字符的个数,重复的也算 思路:Set记录字符串J中的 ...
- K8S Flannel网络插件
0.前言 参考文档:https://github.com/containernetworking/cni Pod网络插件,为了实现Pod网络而需要的插件.组件.由于Kubernetes通过开放的CNI ...
- 【系统问题】windows10打印就蓝屏-报错误代码“win32kfull.sys”
现象描述: 打印机一打印电脑就蓝屏,蓝屏错误代码为:win32kfull.sys 原因分析: 2021年3月9日-推送了KB5000802补丁更新(操作系统内部版本19041.867和19042.86 ...
- 解决WIN7无法安装高版本Node.js问题
网上很多文章都让去安装低版本node 由于业务需求,低版本node npm 有一些包支持的不好 npm出cb() never call 本着更新npm 顺带弄个高版本的node 单独更新npm npm ...
- java基础题(4)
5.4接口和抽象类 5.4.1实现抽象方法 描述: 已知抽象类Base中定义了calculate方法,该方法的计算过程依赖于sum()和avg(),而后两个方法均为抽象方法.要求定义Base的子类Su ...
- 测试软件稳定性、健壮性之Monkey工具--简洁与深入
搭建环境这章节没做详细说明,因为我是前期做APP自动化是已经将 SDK 以及JDK给安装配置好了,这次是直接上来演示monkey的功能点以及运用 一.什么是稳定性测试? 通过随机点击屏幕一段时间,看看 ...
- 『忘了再学』Shell基础 — 32、Shell中test测试命令详解
目录 1.test测试命令 (1)test命令介绍 (2)test命令使用方式 (3)示例 2.按照文件类型进行判断 3.按照文件权限进行判断 4.两个文件之间进行比较 5.两个整数之间比较 6.字符 ...
- 为什么不建议使用自定义Object作为HashMap的key?
此前部门内的一个线上系统上线后内存一路飙高.一段时间后直接占满.协助开发人员去分析定位,发现内存中某个Object的量远远超出了预期的范围,很明显出现内存泄漏了. 结合代码分析发现,泄漏的这个对象,主 ...
- python基础教程:定义类创建实例
类的定义 在Python中,类通过class关键字定义,类名以大写字母开头 >>>class Person(object): #所有的类都是从object类继承 pass #pass ...
- 基于.NetCore开发博客项目 StarBlog - (15) 生成随机尺寸图片
系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...