我有一个主/从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
按照这个: