【问题标题】:Can't restore slave replication无法恢复从属复制
【发布时间】:2021-02-08 14:27:04
【问题描述】:

导入 mysqldump 时会返回此错误

# sh restore_db_replication.sh
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.
dynaccount_dump.sql.gz                                                                    100%  265MB  97.4MB/s   00:02
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1776 (HY000) at line 31: Parameters MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE and RELAY_LOG_POS cannot be set when MASTER_AUTO_POSITION is active.
96.0KiB 0:00:00 [4.93MiB/s] [>                                                                             ]  0%
mysql: [Warning] Using a password on the command line interface can be insecure.

脚本

#!/bin/sh

slave_pass='xxx'

master_host='server.com'
master_pass='xxx'

ssh -o StrictHostKeyChecking=no root@$master_host 'mysqldump -u root -p'"$master_pass"' --master-data --single-transaction --hex-blob --routines --triggers --events --quick --add-drop-database --extended-insert --databases name-of-db | gzip > /root/dump.sql.gz'

scp -o StrictHostKeyChecking=no root@$master_host:/root/dump.sql.gz /root

mysql -u root_slave -p$slave_pass -e "stop slave; CHANGE MASTER TO MASTER_HOST='$master_host', MASTER_USER='repl', MASTER_PASSWORD='$master_pass', MASTER_PORT=3306, MASTER_AUTO_POSITION=1; reset master;"

pv /root/dump.sql.gz | gunzip | mysql -u root_slave -p$slave_pass
mysql -u root_slave -p$slave_pass -e "start slave"

echo "\nShow slave status? [Y/n]"
read SHOW_STATUS

if [ "$SHOW_STATUS" = "y" ] || [ "$SHOW_STATUS" = "" ]; then
    mysql -u root_slave -p$slave_pass -e "show slave status\G;"
fi

【问题讨论】:

    标签: mysql debian sh


    【解决方案1】:

    错误是由于 GTID 复制设置为 OFF

    并且 MASTER_AUTO_POSITION=1

    并且您在停止从站后没有重置它。

    解决方案是以下之一:

    (1) 如果您希望从站从创建此备份的位置开始读取,请执行以下操作:

    在 mysqldump 命令中(脚本第 8 行):

    --set-gtid-purged=ON
    

    在“停止奴隶;”之后在脚本的第 12 行中:

    mysql -u root_slave -p$slave_pass -e "停止从机;

    reset slave;
    

    (2)如果想让slave从头开始读

    在第 12 行

    同样在停止从站后添加:

    reset slave;
    

    变化:

    MASTER_AUTO_POSITION=1
    

    收件人:

    MASTER_AUTO_POSITION=0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多