当前位置:   article > 正文

mysql全量备份及数据恢复实践

mysql全量备份及数据恢复实践

前置   

myql:8.0.34

percona-xtrabackup:percona-xtrabackup-8.0.34-29

一、全量备份脚本

  1. #!/bin/bash
  2. #删除历史
  3. find /data/backups -mtime +10 -exec rm -rf {} \;
  4. #下载备份工具
  5. #wget https://file.zjwlyy.cn/percona-xtrabackup-8.0.34-22.tar.gz (最好用于mysql-8.0.20以上)
  6. USER='root'
  7. PORT=3306
  8. PASSWD='xxxxxx'
  9. HOST='localhost'
  10. SOCKET="/tmp/mysqld.sock"
  11. DATE=`date +"%F"`
  12. /data/percona-xtrabackup-8.0.34/bin/xtrabackup --no-server-version-check --backup --user=$USER --password=$PASSWD --host=$HOST --port=$PORT --socket=$SOCKET --stream=xbstream |gzip - > /data/backups/full_${DATE}.xbstream.gz

参数解释:

--no-server-version-check   不做版本检查

--backup     执行备份的参数

--stream=xbstream      xtrabackup自带的压缩软件格式

gzip      使用gz压缩,缩小空间占用

二、备份恢复测试

2.1准备配置文件/etc/my.cnf

  1. [client]
  2. port = 3306
  3. socket = /tmp/mysqld.sock
  4. default-character-set = utf8mb4
  5. [mysqld]
  6. ########basic settings########
  7. server-id = 33066771
  8. port = 3306
  9. socket = /tmp/mysqld.sock
  10. pid-file = /tmp/mysqld.pid
  11. user = mysql
  12. default_authentication_plugin=mysql_native_password
  13. character_set_server=utf8mb4
  14. default-time-zone='+08:00'
  15. skip_name_resolve = 1
  16. max_connections = 800
  17. max_connect_errors = 1000
  18. datadir = /data/zbdb/mysqldata #重点
  19. transaction_isolation = READ-COMMITTED
  20. explicit_defaults_for_timestamp = 1
  21. join_buffer_size = 2M
  22. tmp_table_size = 512M
  23. tmpdir = /tmp
  24. max_allowed_packet = 16M
  25. sql_mode = ""
  26. #interactive_timeout = 28800
  27. #wait_timeout = 28800
  28. read_buffer_size = 2M
  29. read_rnd_buffer_size = 2M
  30. sort_buffer_size = 256M
  31. lower_case_table_names=1
  32. ########log settings########
  33. log_error = /data/zbdb/mysqllog/wlyy6771.err #重点,手动创建
  34. slow_query_log = 1
  35. slow_query_log_file = /data/zbdb/mysqllog/slow.log
  36. log_queries_not_using_indexes = 1
  37. log_slow_admin_statements = 1
  38. log_throttle_queries_not_using_indexes = 10
  39. binlog_expire_logs_seconds = 7776000
  40. long_query_time = 2
  41. min_examined_row_limit = 100
  42. ########replication settings########
  43. log_bin = /data/zbdb/mysqllog/wlyy6771-bin #重点
  44. sync_binlog = 100
  45. binlog_format = row
  46. relay_log = /data/zbdb/mysqllog/relay.log
  47. relay_log_recovery = 1
  48. ########innodb settings########
  49. innodb_page_size = 16384
  50. innodb_buffer_pool_size = 6G #重点
  51. innodb_buffer_pool_instances = 8
  52. innodb_buffer_pool_load_at_startup = 1
  53. innodb_buffer_pool_dump_at_shutdown = 1
  54. innodb_lru_scan_depth = 2000
  55. innodb_lock_wait_timeout = 5
  56. innodb_io_capacity = 4000
  57. innodb_io_capacity_max = 8000
  58. innodb_flush_method = O_DIRECT
  59. innodb_log_group_home_dir = /data/zbdb/mysqllog/redolog/ #重点
  60. innodb_undo_directory = /data/zbdb/mysqllog/undolog/ #重点
  61. innodb_flush_neighbors = 1
  62. #innodb_log_file_size = 300M
  63. innodb_log_buffer_size = 16M
  64. innodb_purge_threads = 4
  65. innodb_thread_concurrency = 64
  66. innodb_print_all_deadlocks = 1
  67. #innodb_strict_mode = 1
  68. innodb_log_file_size = 1024M
  69. innodb_strict_mode = 0
  70. innodb_sort_buffer_size = 64M
  71. [mysqldump]
  72. quick
  73. max_allowed_packet = 16M
  74. [mysql]
  75. no-auto-rehash
  76. prompt=\\u@\\d \\r:\\m:\\s>
  77. [mysqlhotcopy]
  78. interactive-timeout

2.2  准备新的mysql

  1. #添加用户和组
  2. groupadd mysql
  3. useradd -g mysql mysql
  4. #新建文件
  5. rm -rf /data/zbdb/*
  6. mkdir -p /data/zbdb/mysqllog/redolog
  7. mkdir -p /data/zbdb/mysqldata/
  8. #改变目录属主
  9. chown -R mysql:mysql /data/zbdb/mysqllog
  10. chown -R mysql:mysql /data/zbdb/mysqldata
  11. #执行安装
  12. bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql-8.0.34 --datadir=/data/zbdb/mysqldata/
  13. # 备份mysqldata和mysqllog 目录
  14. cp -rf mysqldata mysqldatabk
  15. cp -rf mysqllog mysqllogbk
  16. #清理mysqldata和mysqllog里的数据
  17. rm -rf mysqldata/*
  18. rm -rf mysqllog/*
  19. #修改 mysql.server
  20. #拉到最上面修改
  21. basedir=/usr/local/mysql-8.0.34
  22. datadir=/data/zbdb/mysqldata
  23. #开机启动脚本
  24. cp mysql.server /etc/init.d/mysqld

2.3  恢复数据

  1. #新建备份目录
  2. mkdir /data/backup
  3. #解压文件(gzip那一层解压)
  4. gzip -d /data/full_2024-04-25.xbstream.gz
  5. #解压文件(xbstream那一层解压)
  6. xbstream -x < /data/full_2024-04-25.xbstream -C /data/backup/
  7. #继续解压
  8. xtrabackup --parallel=4 --decompress --target-dir=/data/backup/
  9. #恢复数据
  10. xtrabackup --prepare --target-dir=/data/backup/
  11. 根据配置文件恢复数据到数据目录
  12. xtrabackup --defaults-file=/etc/my.cnf --datadir=/data/zbdb/mysqldata --copy-back --target-dir=/data/backup/
  13. #创建日志文件(不自动建)
  14. touch /data/zbdb/mysqllog/wlyy6771.err
  15. #修改目录所有者
  16. chown -R mysql:mysql /data/zbdb/

2.4  启动数据库

service mysqld start

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/504547
推荐阅读
相关标签
  

闽ICP备14008679号