mysql主从同步/主主同步

Centos环境
198.168.1.20
198.168.1.21

master操作:

修改mysql配置文件(my.cnf)

[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=xxx     //要同步的库
binlog-ignore-db=mysql   //不同步的
sync_binlog = 1      //类似实时存入binlog,=0则会先写进缓存
binlog_checksum = none   //此命令可以同步不同版本的mysql数据库,mysql5.6.5以后的版本中binlog_checksum默认值是crc32,
binlog_format = mixed
basedir = /usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock


锁定数据库
flush tables with read lock;
//此命令为只读锁,unlock tables命令解除锁定



导出要同步的库

 mysqldump  -uroot 库名 -p > /root/mobi.sql


rsync传输sql库
rsync -r "ssh -p22" -avpgolr /root/mobi.sql 192.168.1.21:/root



授权用户(测试注意防火墙的关闭)

grant replication slave,replication client on *.* to [email protected]‘192.168.1.21‘ identified by ‘123456‘;
flush privileges;


查看授权:
show grants for [email protected]‘192.168.1.21‘;



查看主服务器状态:

show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000024 |       592 |              |                  |
+------------------+----------+--------------+------------------+

从服务器操作

修改配置文件my.cnf

server-id=2
log-bin=mysql-bin
replicate-do-db=mobi
replicate-ignore-db=mysql
slave-skip-errors = all
basedir = /usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql

如果有库则先dump下备份,避免操作失误

mysqldump  -uroot 要备份的库 -p > /root/要备份的库.sql.bak
drop 要备份的库;

创建空库然后导入

mysql> create database 要备份的库;
mysql> use mobi;
mysql> source /root/要备份的库.sql

额外内容(同步表内容):


当只针对某些库的某张表进行同步时,如下,只同步huanqiu库的haha表和huanpc库的heihei表:
replicate-do-db = 库名
replicate-wild-do-table = 库名.表名       //当只同步几个或少数表时,可以这样设置。注意这要跟上面的库指定配合使用;
replicate-do-db = 库名
replicate-wild-do-table = 库名.表名      //如果同步的库的表比较多时,就不能这样一一指定了,就把这个选项配置去掉,直接根据指定的库进行同步。

=================================

配置主从指令:

mysql> stop slave;(同步前先关闭)
mysql> change  master to master_host=‘192.168.1.20‘,master_user=‘root‘,master_password=‘123456‘,master_log_file=‘mysql-bin.000024‘,master_log_pos=592;
mysql> start slave;


从库先查看slave状态

show slave status\G;

看是不是两个yes 如果不是就有问题

测试阶段(主库)

mysql> unlock tables;  

//解锁
mysql> create table zhang (id,int)

从库查看
mysql> desc zws;
+---------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+---------+------+-----+---------+-------+
| student | int(11) | YES | | NULL | |
+---------+---------+------+-----+---------+-------+

主主同步

=============================================================================

=============================================================================

master中修改

修改配置文件 my.cnf

server-id = 1
log-bin = mysql-bin
binlog-ignore-db = mysql,information_schema
sync_binlog = 1
binlog_checksum = none
binlog_format = mixed
auto-increment-increment = 2
auto-increment-offset = 1
slave-skip-errors = all 

授权用户:

mysql> grant replication slave,replication client on *.* to [email protected]‘192.168.1.21‘ identified by "123456";
mysql> flush privileges;

mysql> FLUSH TABLES WITH READ LOCK; //注意该参数设置后,如果自己同步对方数据,同步前一定要记得先解锁!

mysql> show master status; //查看主信息

slave库配置

修改配置文件my.cnf

[mysqld]
server-id=2
log-bin=mysql-bin
replicate-do-db=mobi
replicate-ignore-db=mysql
slave-skip-errors = all
sync_binlog = 1
binlog_checksum = none
binlog_format = mixed
auto-increment-increment = 2
auto-increment-offset = 2
slave-skip-errors = all
basedir = /usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql

授权用户

mysql> grant replication slave ,replication client on *.* to [email protected]‘192.168.1.20‘ identified by "123456";
mysql> flush privileges;
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000020 |      602 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

主库解锁

mysql> unlock tables;     //先解锁,将对方数据同步到自己的数据库中
mysql> stop slave ;
mysql> change master to master_host=‘192.168.1.20‘,master_user=‘root‘,master_password=‘123456‘,master_log_file=‘master-bin.000027‘,master_log_pos=150;
mysql> start slave;
mysql> show slave status \G;

此处实现了slave--->master的功能

====================================================================

master---->slave功能


mysql> unlock tables;
mysql> stop slave ;
mysql> change master to master_host=‘192.168.1.21‘,master_user=‘root‘,master_password=‘123456‘,master_log_file=‘master-bin.000023‘,master_log_pos=150;
mysql> start slave;
mysql> show slave status \G;

此刻完成

====================================================================

问题排错:
出现

Slave_IO_Running: No
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: ‘Could not find first log file name in binary log index file‘

解决方案:
1)从库上执行
stop slave;
2)主库进行刷新日志
flush logs;
3)查看日志
mysql> show master status\G;
4)重新
CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000114‘,MASTER_LOG_POS=120;
5)重启
start slave;

原文地址:http://blog.51cto.com/slient/2174180

时间: 2024-08-10 12:06:40

mysql主从同步/主主同步的相关文章

mysql 主从配置 和 主主配置

一:主从配置 A机:192.168.1.67 (主) B机:192.168.1.20 (从) A机操作: 1:备份要做主从的数据库. mysqldump -uroot -pkobe24 -S /tmp/mysql.sock discuz > /home/discuz.back #备份discuz至/home/discuz.back. scp /home/discuz.back [email protected]:/home/discuz.back #远程复制到从服务器上. 2:修改my.cnf

Centos7配置mysql主从:一主多从

mysql主从复制原理1.首先master将数据更新记录到二进制binlog文件2.slave通过I/O线程向master请求binlog日志文件指定位置之后的内容3.master接收到slave的io请求之后,就会从binlog相应的位置点开始,给slave传日志4.slave接收到日志后,会写入本地的relay log中继日志中5.slave通过sql线程读取中继日志的内容,在数据库中执行相应的操作,到此为止,master和slave上的数据一致,之后slave服务器进入等待状态,等待mas

MySQL(三):MHA实现MySQL主从架构中主服务器的高可用,zabbix完成manager重启

MHA(Master High Availability)是目前在MySQL高可用方面相对成熟的一个解决方案,MHA在监控到master节点故障时,会提升其中拥有最新数据的slave节点成为新的master节点,在此期间,MHA会通过于其它从节点获取额外信息来避免一致性方面的问题.MHA还提供了master节点的在线切换功能. MHA 服务有两种角色,MHA Manager(管理节点)和 MHA Node(数据节点): MHA Manager:通常单独部署在一台独立机器上管理多个 master/

MySQL主从

mysql主从--1 [[email protected] ~]# rm -rf /usr/local/mysql         (删除之前安装的MySQL) [[email protected] ~]# cd /usr/local/src/ [[email protected] src]# wget http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.73-linux-i686-glibc23.tar.gz [[email protected]

Mysql主从+Amoeba读写分离

一.安装环境 centos6.5 192.168.1.100 Amoeba-mysql centos6.5 192.168.1.101 mysql-主 centos6.5 192.168.1.102 mysql-从 二.Mysql 主从配置 在主MySQL192.168.1.101上配置 Vim /usr/local/mysql/etc/my.cnf server-id       = 1                     主库一定要比从库的数字小 binlog-do-db    = ba

MySql主从拓展2

mysql架构由小变大的演变过程 第一阶段 网站访问量日pv量级在1w以下.单台机器跑web和db,不需要做架构层调优.此时,数据往往都是每日冷备份的,但有时候如果考虑数据安全性,会搭建一个mysql主从 第二阶段 网站访问量日pv达到几万.此时单台机器已经有点负载,需要我们把web和db分开,需要搭建memcached服务作为缓存.也就是说,在这个阶段,我们还可以使用单台机器跑mysql去承担整个网站的数据存储和查询.如果做mysql主从,目的也是为了数据安全性. 第三阶段 网站访问量日pv达

部署社交网站- MYSQL主从 与 MFS 文件系统

案例概述 公司的社交网站采用PHP语言开发,为了管理PHP程序员开发的代码,上级领导要求搭建SVN服务器进行版本控制.社交网站的第一个版本部署在LNMP平台之上,前端为 Nginx服务器,通过 fastcgi协议访问后端的PHP服务器.为了保证数据安全,要求搭建 MYSQL数据库主从集群. 社交网站项目包含用户的相册功能,允许用户上传照片,上传照片需要使用共享存储来存放.针对共享存储可用的开源方案有很多,如MFS. FastDFS等.公使用MFS分布式文件系统来实现,并将MFS挂载在PHP服务器

mysql的主从、主主及半同步复制

mysql复制 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接

搭建MySQL的主从、半同步、主主复制架构

复制其最终目的是让一台服务器的数据和另外的服务器的数据保持同步,已达到数据冗余或者服务的负载均衡.一台主服务器可以连接多台从服务器,并且从服务器也可以反过来作为主服务器.主从服务器可以位于不同的网络拓扑中,由于mysql的强大复制功能,其复制目标可以是所有的数据库,也可以是某些数据库,甚至是某个数据库中的某些表进行复制. MySQL支持的两种复制方案:基于语句复制,基于行复制基于语句复制基于行复制,这两种复制方式都是通过记录主服务器的二进制日志中任何有可能导致数据库内数据发生改变的SQL语句到中

17.1 MySQL主从介绍;17.2 准备工作;17.3 配置主;17.4 配置从;17.5 测试主从同步

17.1 MySQL主从介绍 1. MySQL主从又叫做Replication.AB复制.简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 2. MySQL主从是基于binlog的,主上须开启binlog才能进行主从. 3. 主从过程大致有3个步骤 1)主将更改操作记录到binlog里 2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里 3)从根据relaylog里面的sql语句按顺序执行 4. 主上有一个log dum