从零开始重buildmysql slave

我有一个主/从MySQL的设置。 这个晚上,我和主人有一些问题。 我需要重新创build所有数据库,因为它们已经损坏了。

现在我停止了我的mysql奴隶,但想要再次启动它,并重新从头开始。 有没有办法做到这一点? 不locking主…

我也认为binlog文件应该被重置。 所以一切都干净了。

有任何想法吗?

如果你在master上使用innodb引擎 – 只需使用带有–skip-lock-tables的 mysqldump, — single-transaction和–master-data = 2开关。

如果你的奴隶只是在逻辑上损坏 – 尝试与锁= 0选项的PTT表同步

下面是一步一步的说明如何使用Linux LVM快照从主服务器重buildMySQL从服务器。 当您无法承受太多时间将二进制文件复制到从属设备时,这是理想的方法。 还有其他的方法,但我总是质疑奴隶的一致性。 我从奴隶拿我的备份,所以我绝对需要确保我的快照始终保持一致。

将innodb最大脏页面百分比设置为零。 这将迫使MySQL将所有页面写入磁盘,这将显着加速重新启动。

set global innodb_max_dirty_pages_pct = 0; 

要监视运行命令的脏页数

 mysqladmin ext -i10 | grep dirty 

一旦数字停止减less,你已经到了这个点继续。 接下来重置主服务器以清除旧的日志/中继日志:

 RESET MASTER; 

执行lvdisplay获取LVpath

 lvdisplay 

输出将如下所示

 --- Logical volume --- LV Path /dev/vg_mysql/lv_data LV Name lv_data VG Name vg_mysql 

使用命令closuresmaster数据库

 service mysql stop 

下一步快照,mysql_snapshot将是新的逻辑卷名称。 如果binlogs放在操作系统驱动器上,那么也需要快照。

 lvcreate --size 10G --snapshot --name mysql_snapshot /dev/vg_mysql/lv_data 

再次用命令启动主

 service mysql start 

将脏页面设置恢复为默认值

 set global innodb_max_dirty_pages_pct = 75; 

再次运行lvdisplay以确保快照在那里和可见

 lvdisplay 

输出:

 --- Logical volume --- LV Path /dev/vg_mysql/mysql_snapshot LV Name mysql_snapshot VG Name vg_mysql 

安装快照

 mkdir /mnt/mysql_snapshot mount /dev/vg_mysql/mysql_snapshot /mnt/mysql_snapshot 

如果您有一个现有的MySQL从站运行,您需要停止它

 service mysql stop 

接下来你需要清除MySQL数据文件夹

 cd /var/lib/mysql rm -fr * 

回到主人。 现在rsync快照到MySQL从属

 rsync --progress -harz /mnt/mysql_snapshot/ targethostname:/var/lib/mysql/ 

一旦rsync完成,您可以卸载并删除快照

 umount /mnt/mysql_snapshot lvremove -f /dev/vg_mysql/mysql_snapshot 

如果旧复制用户不存在或密码未知,请在主服务器上创build复制用户

 GRANT REPLICATION SLAVE on *.* to 'replication'@'[SLAVE IP]' identified by 'YourPass'; 

validation/ var / lib / mysql数据文件是否属于mysql用户,如果是这样的话,可以省略下面的命令:

 chown -R mysql:mysql /var/lib/mysql 

接下来loggingbinlog位置

 ls -laF | grep mysql-bin 

你会看到类似的东西

 .. -rw-rw---- 1 mysql mysql 1073750329 Aug 28 03:33 mysql-bin.000017 -rw-rw---- 1 mysql mysql 1073741932 Aug 28 08:32 mysql-bin.000018 -rw-rw---- 1 mysql mysql 963333441 Aug 28 15:37 mysql-bin.000019 -rw-rw---- 1 mysql mysql 65657162 Aug 28 16:44 mysql-bin.000020 

这里主日志文件是顺序最高的文件编号,文件日志位置是文件大小。 logging这些值:

 master_log_file=mysql-bin.000020 master_log_post=65657162 

接下来启动从属MySQL

 service mysql start 

通过执行以下命令在从站上执行更改主站命令:

 CHANGE MASTER TO master_host="10.0.0.12", master_user="replication", master_password="YourPass", master_log_file="mysql-bin.000020", master_log_pos=65657162; 

最后启动奴隶

 SLAVE START; 

检查从站状态:

 SHOW SLAVE STATUS\G 

确保从站IO正在运行,并且没有连接错误。 祝你好运!

我的完整博客文章的更多信息:

http://www.juhavehnia.com/2015/05/rebuilding-mysql-slave-using-linux-lvm.html

按照这个:

  • 断开从站和主站
  • 只需从奴隶删除所有数据库
  • 通过单一事务转储主数据
  • 在从机上使用转储
  • 重新连接主机和从机,并等待同步