mysql replication 问题

今天又犯二了,居然把mysql的复制给忘了,也算醉了,再次总结mysql 主从:

公司的db01-fk(172.33.4.155)机器出了问题,需要换新的机器。这台机器上的mysql也是从中国db01复制的,所以解决思路:1、从中国db01备份数据库,并将备份文件传至FK;2、在FK site 新db01-fk上还原数据库,并设置master地址及相关参数,实现复制;

具体操作如下:

1、CN db01 备份数据库,并传至新db01-fk,操作如下:

[[email protected] ~]# mysqldump -A  --master-data=1 --single-transaction --events | gzip > /tmp/fulldb-16-12-05.sql.gz

[[email protected] ~]# ll -h /tmp/fulldb-16-12-05.sql.gz

-rw-r--r-- 1 root root 411M Dec  5 15:15 /tmp/fulldb-16-12-05.sql.gz

[[email protected] ~]# aws s3 cp /tmp/fulldb-16-12-05.sql.gz  s3://yeecalllogs-mb/

upload: ../tmp/fulldb-16-12-05.sql.gz to s3://yeecalllogs-mb/fulldb-16-12-05.sql.gz

[[email protected] ~]#

2、在db01-fk(new) 复制原db01-fk的配置文件、密钥文件,启动服务,设置远程master主机的相关参数

[[email protected] ~]# rsync -avzoptgl --progress  172.33.4.155:/home/mysql/  /home/mysql/

[[email protected] ~]# rsync -avzoptgl --progress  172.33.4.155:/etc/my.cnf  /etc/my.cnf

[[email protected] ~]# service mysqld start

[[email protected] ~]# mysql

mysql> change master to

-> master_host=‘1.1.1.1‘,

-> master_user=‘repl‘,

-> master_password=‘123456789‘,

-> master_port=13306,

-> master_ssl=1,

-> master_ssl_ca=‘/home/mysql/ssl/ca.crt‘,

-> master_ssl_cert=‘/home/mysql/ssl/4.idc.ycall.com.crt‘,

-> master_ssl_key=‘/home/mysql/ssl/4.idc.ycall.com.key‘;

Query OK, 0 rows affected (0.02 sec)

mysql> exit

在db01-fk(new)上还原数据库,进行复制

[[email protected] ~]# aws s3 cp s3://yeecalllogs-mb/fulldb-16-12-05.sql.gz /tmp/

download: s3://yeecalllogs-mb/fulldb-16-12-05.sql.gz to ../tmp/fulldb-16-12-05.sql.gz

[[email protected] ~]# gzip -d /tmp/fulldb-16-12-05.sql.gz

[[email protected] ~]# grep -P -io "change master to .*\d;$" /tmp/fulldb-16-12-05.sql

CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000069‘, MASTER_LOG_POS=8105870;

[[email protected] ~]# mysql < /tmp/fulldb-16-12-05.sql

[[email protected] ~]# mysql

mysql> start slave ;

mysql> show slave status \G

[[email protected] ~]#

说明:

mysqldump --help

--master-data[=#]  This causes the binary log position and filename to be

appended to the output. If equal to 1, will print it as a

CHANGE MASTER command; if equal to 2, that command will

be prefixed with a comment symbol. This option will turn

--lock-all-tables on, unless --single-transaction is

specified too (in which case a global read lock is only

taken a short time at the beginning of the dump; don‘t

forget to read about --single-transaction below). In all

cases, any action on logs will happen at the exact moment

of the dump. Option automatically turns --lock-tables

off.

--master-data[=#]      在备份导出的文件里追加二进制binlog文件的位置和名称

如果值等于1,就会添加一个CHANGE MASTER语句

如果值等于2,就会在CHANGE MASTER语句前添加注释

这个参数会--lock-all-tables锁表,除非指定了--single-transaction

这种情况下,锁表只会在dump开始的时候持续一小段时间,照理说

在dump的时候,任何动作都会影响到binlog文件

dump结束之后,选项会自动关闭锁表功能

分析:如果在恢复DB之前指定  change master to 的 host port .....,然后再恢复DB, 这样 dump 文件中带的  master_log_file 和 master_log_pos 才会生效。因为一旦修改master host(即使修改前后的值相同),就会生成新的file和pos,原来dump文件的语句就被冲掉了。所以这种方式必须首先指定host,然后恢复,最后 start slave;

当然:我上次操作,在mysqldump时没加这两参数,使用了-x 锁表功能 ,但在mysqldump过程中,在主库上 show master status  , 查看了 position 及 logfile,然后记下这两项值,以便在从库change master to 操作时指定这些参数。

时间: 2024-10-28 16:30:28

mysql replication 问题的相关文章

MySQL Replication的主从同步的常用2种配置方式

因为实际的业务需求最近就需要部署一些mysql服务器,而在部署mysql服务器中在做主从同步时用的都是MySQL Replication的主从同步的方法,当然实现mysql主从同步的方法还有很多,这里就只说使用MySQL Replication的主从同步的功能,在实现mysql的主从同步的常用的2种配置方式,当然可以根据实际的生产环境选择不同的方式,在这里就简单的把2种配置方法配置my.cnf说一下,因为以前有写过mysql的主从同步方法,这里就不再赘述了,需要可以参看:http://jim12

MySql Replication配置

一.前言 Mysql Replication作为读写分离的廉价解决方案,支持一主多备的方式进行数据存储,采用二进制日志传送,目前存在着广泛应用,网上相关概念也比较多,不再重复介绍.引用一张官方提供的Replication应用场景图片(http://dev.mysql.com/doc/refman/5.1/en/replication-solutions.html).本文主要记录了基于Linux环境下的Mysql Replication配置步骤. 二.环境准备   IP_PORT OS Mysql

浅析 MySQL Replication(本文转自网络,非本人所写)

作者:卢飞 来源:DoDBA(mysqlcode) 0.导读 本文几乎涵盖了MySQL Replication(主从复制)的大部分知识点,包括Replication原理.binlog format.复制中如何保证数据一致性.组提交.复制优化.半同步复制.多源复制. 目前很多公司中的生产环境中都使用了MySQL Replication ,也叫 MySQL 复制,搭建配置方便等很多特性让 MySQL Replication 的应用很广泛,我们曾经使用过一主拖20多个从库来分担业务压力.关于 MySQ

认识MySQL Replication

MySQL Replication 是 MySQL 非常有特色的一个功能,他能够将一个 MySQL Server 的 Instance 中的数据完整的复制到另外一个 MySQL Server 的 Instance 中.虽然复制过程并不是实时而是异步进行的,但是由于其高效的性能设计,延时非常之少. Mysql 的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们称之 Slave).在 Mas

MySQL Replication主从复制—(实例)

主从复制原理 MySQL Replication是一个从Master复制到一台或多台Slave的异步复制过程. Master和Slave之间实现整个复制过程主要由三个线程来完成,其中一个IO线程在Master端,两个线程(SQL线程和IO线程)在Slave端. 通过Master服务器打开Binary Log(二进制日志文件)的功能,Slave端从Master端获取该日志信息,然后将二进制文件解析为SQL语句,并完全顺序地执行SQL语句所记录的各种操作.(Slave获取到的二进制文件同时也会写入到

MySql Replication

[MySql Replication] Replication is asynchronous by default. Depending on the configuration, you can replicate all databases, selected databases, or even selected tables within a database. To configure a master to use binary log file position based re

mysql流行的四种高可用架构之:Keepalived+Mysql Replication

关于MySQL-HA,目前有很多种解决方案,目前互联网上用的较多的是Keepalived+Mysql Replication组合.MMM+Mysql Replication组合.Heartbeat+DRBD+Mysql组合,以及红帽RHSC高可用集群套件.

MySQL Replication 线程(理解详细过程)

Replication 线程 Mysql 的Replication 是一个异步的复制过程,从一个Mysql instace(我们称之为Master)复制到另一个Mysql instance(我们称之Slave).在Master 与Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql 线程和IO 线程)在Slave 端,另外一个线程(IO 线程)在Master 端. 要实现MySQL 的Replication ,首先必须打开Master 端的Binary Log(mysql

Linux运维 第四阶段(八)MySQL REPLICATION(SSL)

Linux运维 第四阶段(八)MySQLREPLICATION(SSL) 一.准备: mysql replication(ssl加密方式传输) mysql-5.5.45-linux2.6-i686.tar.gz(通用二进制格式包) 两node,一主一从 master(node1:192.168.41.131,既是CA又是master) slave(node2:192.168.41.132) 环境: [[email protected] ~]# uname -a Linux node1.maged

mysql replication principle--转

原文地址:http://www.codeweblog.com/mysql-replication-principle/ 1, the replication process Mysql replication (replication) is an asynchronous replication, from a Mysql instace (called Master) to another Mysql instance (call it Slave). Implement the copy