本篇文章为大家展示了MySQL 8.0.11 innodb cluster运维管理中如何进行备份,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
目前创新互联已为上千的企业提供了网站建设、域名、雅安服务器托管、成都网站托管、企业网站设计、阿勒泰网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
mysqlbackup是一个热备份工具、也就是说它不像mysqldump那样给表上一个全局锁,由于mysqldump上了这个锁,所以就造成客户端只能对数据库进行读操作不能写,这也就是称mysqldump为温备份的原因。但是mysqlbackup真的有这么吊吗?答案是并没有。对于innodb引擎的表mysqlbackup 热备的;但是对于非innodb表mysqlbackup就只能温备了,原因是这类引擎不支持事务也就是说不能通过事务日志来保证备份的一致性,所以就只能给表加上一个全局锁来解决了。为了得到一致的备份mysqlbackup要不停的去追踪mysql数据库的sln号,也就是说mysqlbackup要执行备份那么它一定要连接上数据库。mysqlbackup对数据库的备份是通过复制文件的方式进行的,也就是说mysqlbackup要和数据库在同一台机器上,和xtrabackup 很相似的。
Mysqlbackup 是企业版mysql中的,但可以拿来使用,登录oracle云下载,搜索mysql backup,下载二进制文件
mysql-commercial-backup-8.0.11-linux-glibc2.12-x86_64.tar.gz
传到主机上并解压,
会有 bin 和lib 文件夹,将其中的文件拷贝到 /usr/local/mysql 对应的目录中, 这里要把 软连接,库全部拷贝的,不然会报错
(官方指导命令)
CREATE USER 'backup'@'localhost' IDENTIFIED BY '$$$$$$$$$$$$$$'; GRANT RELOAD ON *.* TO 'backup'@'localhost'; GRANT CREATE, INSERT, DROP, UPDATE ON mysql.backup_progress TO 'backup'@'localhost'; GRANT CREATE, INSERT, SELECT, DROP, UPDATE ON mysql.backup_history TO 'backup'@'localhost'; GRANT REPLICATION CLIENT ON *.* TO 'backup'@'localhost'; GRANT SUPER ON *.* TO 'backup'@'localhost'; GRANT PROCESS ON *.* TO 'backup'@'localhost'; GRANT ALTER ON mysql.backup_history TO 'backup'@'localhost'; #此表在主库上备份才会生成和写入 GRANT LOCK TABLES, SELECT, CREATE, DROP, FILE ON *.* TO 'backup'@'localhost'; GRANT CREATE, INSERT, DROP, UPDATE ON mysql.backup_sbt_history TO 'backup'@'localhost';#此表仅在主库上有效
##备份到/fullbak/2018-10-10_19-19-11/datadir 类似这样的目录中 mysqlbackup --backup-dir=/data/backup/fullbak --host=127.0.0.1 --port=3306 --user=backup --password=$$$$$$$$ --with-timestamp backup ##############备份到/fullbak/2018-10-10_19-19-11/full_backup.bki 这样一个单文件中,以后不用备份单文件,我们自己压缩备份更小 mysqlbackup --backup-dir=/data/backup/fullbak --host=127.0.0.1 --port=3306 --user=backup --password=$$$$$$$$$$$ --backup-image=full_backup.bki --with-timestamp backup-to-image
--user:用户名。
--password:密码。
--port:端口,默认值为3306。
--backup-dir:可以看成是mysqlback的工作目录,临时用的。
--backup-image:备份文件名,这个是最终要的文件,别的都可以不要。位置可以不带路径,默认放到 backup-dir
backup-to-image:把所有的备份信息输出到一个备份文件当中
--with-timepstap: 会自动生成一个带日期文件夹,这里放的是备份时用的临时文件和最后的备份镜像(不指定镜像位置的化)
实际证明,单文件备份是无法进行恢复的,下面这个例子放弃
mysqlbackup --backup-dir=/data/backup --host=127.0.0.1 --port=3306 --user=backup --password=Qs3ce3saadr37tpP --incremental-with-redo-log-only --incremental-base=history:last_backup --with-timestamp --backup-image=incre_backup.bki backup-to-image
不备份成单个文件,增量备份貌似也不支持,这个是可以进行恢复的 指定了备份到的增量目录和增量的基源
mysqlbackup --incremental-backup-dir=/data/backup/increbak --host=127.0.0.1 --port=3306 --user=backup --password=Qs3ce3saadr37tpP --incremental --incremental-base=history:last_backup --with-timestamp --backup-image=incre_backup.bki backup
一定要先执行上面的全备, last_backup 这个备份参数会在数据库中找,然而,这个备份要在主库进行,不能再从库,因为从库不写备份信息。
#########备份到其他服务器
The following command streams the backup as a single-file output to a remote host to be saved under
the file name my_backup.img (--backup-dir=/tmp designates the directory for storing temporary files
rather than the final output file):
mysqlbackup --defaults-file=~/my_backup.cnf --backup-image=- --backup-dir=/tmp backup-to-image | \
ssh
上述内容就是MySQL 8.0.11 innodb cluster运维管理中如何进行备份,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。