服务器迁移记录

服务器迁移记录

[文章作者:磨延城 转载请注明原文出处: https://mo2g.com/view/158/ ]

前段时间阿里云的服务器到期,就把博客迁移到新的服务器上,系统也升级到了 Centos 8.新服务器的内存有 2G 是以前的两倍,所以采用了 Podamn(docker 的替代品)来部署环境,以后再迁移也方便了.

前段时间阿里云的服务器到期,就把博客迁移到新的服务器上,系统也升级到了 Centos 8。新服务器的内存有 2G 是以前的两倍,所以采用了 Podamn(docker 的替代品)来部署环境,以后再迁移也方便了。 本文记录大致的迁移过程,陆续更新,也可以当作一个参考。 ## 运行环境如下 ``` Nginx PHP 8 (自定义镜像) Xunsearch (自定义镜像) Mysql 8 ``` 以前习惯基于Cetons编译镜像,现在改成alpine,发现确实好用。 ## Mysql 常用的备份工具介绍 1. mysqldump 是官方的 Mysql 逻辑备份上古神器,单线程。 2. mydumper 是 Maxbube 开源的 Mysql 逻辑备份神器,多线程。 3. xtrabackup 是 Percona 开源的 Mysql 物理备份神器,多线程。 全库备份优先考虑使用 xtrabackup,非全库备份优先考虑使用 mydumper。 ## 新旧服务器 - 安装 percona-xtrabackup ``` yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm ## 旧版 mysql 使用 yum install percona-xtrabackup ## 支持 mysql 5.7.x yum install percona-xtrabackup-24 ## 只支持 mysql8.0以上版本 yum install percona-xtrabackup-80 ## 解压依赖 yum install qpress ``` ## 旧服务器 - 创建同步用户 先创建一个用于内网同步的用户,如果已有则可跳过此步骤。 ``` create user 'mo_rep'@'168.8.88.%' identified by '888888'; grant replication slave on *.* to 'mo_rep'@'168.8.88.%'; flush privileges; ``` ## 旧服务器 - 导出 mysql 数据到硬盘 xtrabackup 会自动把 binglog pos 记录到 xtrabackup_info 中,如果要做主从同步会用得到。 ``` time xtrabackup --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --backup --user=root --password='888888' --parallel=1 --stream=xbstream --compress --compress-threads=1 /data/xtrabackup > /data/xtrabackup/mo2g.xbstream ``` ## 旧服务器 - 传输数据到新服务器 20G 传输预计需要同步 2:15:25,传输速率大概是 2.8M/s,可能是小文件比较多,仅供参考。 ``` rsync --progress -avz -e 'ssh -p 22 -i key' /data/* root@168.8.88.188:/data ``` ## 新服务器 - 安装 mysql 在这一步新服务器只需要安装 Mysql,先不要启动,也不需要配置密码,数据还原成功会恢复原有数据库的所有用户。 ``` yum install mysql-server systemctl enable mysqld # 相关命令参考 systemctl daemon-reload grep 'temporary password' /var/log/mysqld.log mysql -uroot -p ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'; flush privileges; ``` ## 新服务器 - 解压数据 ``` time xbstream -x < /data/xtrabackup/mo2g.xbstream -C /data/xtrabackup/ xtrabackup --decompress --target-dir=/data/xtrabackup/ ``` ## 新服务器 - 预处理数据 为了保证数据文件的一致性,参数 --prepare ,执行了以下操作 1. 回滚未提交的事务 2. 同步已经提交的事务 ``` xtrabackup --prepare --target-dir=/data/xtrabackup/ ``` ## 新服务器 - 导入数据 ``` xtrabackup --defaults-file=/etc/my.cnf --move-back --target-dir=/data/xtrabackup/ ``` ## 新服务器 - 启动 Mysql ``` chown mysql\: /var/lib/mysql -R systemctl start mysqld ``` ## 新服务器 - 查看 xtrabackup_info,获取 binlog_pos 参数 ``` cat xtrabackup_info uuid = a2297c94-0fed-11ec-8454-00163e0e524d name = tool_name = xtrabackup tool_command = --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --backup --user=root --password=... --parallel=1 --stream=xbstream --compress --target-dir=/data/xtrabackup tool_version = 8.0.26-18 ibbackup_version = 8.0.26-18 server_version = 8.0.21 start_time = 2021-09-07 23:09:21 end_time = 2021-09-07 23:09:44 lock_time = 6 binlog_pos = filename 'binlog.000180', position '156' innodb_from_lsn = 0 innodb_to_lsn = 1597965138 partial = N incremental = N format = xbstream compressed = compressed encrypted = N ``` ## 新服务器 - 配置 mysql 主从同步 ``` # 用旧服务器的用户登录 mysql mysql -h 127.0.0.1 -p # 查看只读配置 SHOW VARIABLES LIKE '%read_only%'; SET GLOBAL read_only = 1; # 配置同步参数 change master to master_host='168.8.88.168', master_port=3306, master_user='mo_rep', master_password='888888', master_log_file='binlog.000180', master_log_pos=156; # 开始同步 start slave; # 查看同步状态 show slave status\G; ``` ### 主从同步可能遇到的问题 如果报错如下错误 ``` ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository ``` 1. 先记录 binlog_pos 参数 2. 重置同步配置 3. 再重新配置同步参数 ``` # 重置同步配置 reset slave; show slave status\G; ```

评论:

  1. 磨者 1011 回复 2021年10月30日 14时25分
    磨者
    感谢分享,刚好用得上

  2. 我来说两句:

      切换  

    磨途歌检测发现,您当前使用的浏览器版本过低,要想使用画板模式,请先更新浏览器

      切换  

    磨途歌随机验证码