Mysql互为主从架构配置

MySQL主主复制结构区别于主从复制结构。在主主复制结构中,两台服务器的任

何一台上面的数据库存发生了改变都会同步到另一台服务器上,这样两台服务器

互为主从,并且都能向外提供服务。 这就比使用主从复制具有更好的性能。

接下来我将使用两个同样的服务器来实现这个效果:

server1_mysql:192.168.1.108

server2_mysql: 192.168.1.110

拓扑结构:
server1_mysql-------server2_mysql

1.创建用户并授权
server1:
mysql> GRANT REPLICATION SLAVE ON *.* TO ‘server2‘@‘192.168.1.110‘  IDENTIFIED BY ‘server2‘;

server2:
mysql> GRANT REPLICATION SLAVE ON *.* TO ‘server1‘@‘192.168.1.108‘  IDENTIFIED BY ‘server1‘;

2.修改Mysql的主配置文件
server1:
 [mysqld]
 server-id = 10
 log-bin = mysql-bin
 replicate-do-db = mydb
 auto-increment-increment = 2   //每次增长2
 auto-increment-offset = 1  //设置自动增长的字段的偏移量,即初始值为1
启动Mysql服务:
# service mysqld restart

server2:
 [mysqld]
 server-id = 20
 log-bin = mysql-bin
 replicate-do-db = mydb
 auto-increment-increment = 2  //每次增长2
 auto-increment-offset = 2 //设置自动增长的字段的偏移量,即初始值为2
启动Mysql服务:
# service mysqld restart
注:二都只有server-id不同和 auto-increment- offset不同
auto-increment-increment的值应设为整个结构中服务器的总数,本案例用到两

台服务器,所以值设为2。

3.重新启动两个服务器
# service mysqld restart

4.为了让两个数据库一样,我们备份其中一个数据库,然后在另一个数据库上恢

复,这样是两个数据库一开始都是一样的。
在server1上操作:
# mysqldump --databases mydb > /tmp/mydb.sql
在server2上操作:
创建一个与mydb同名的空数据库
# mysql
    > CREATE DATABASE mydb;
    >\q
# scp 192.168.1.108:/tmp/mydb.sql  ./
# mysql -uroot -p mydb < /tmp/mydb.sql

5.然后两个服务器相互通告二进制日志的位置并启动复制功能:
在server1上:
# mysql
   > CHANGE MASTER TO
   > MASTER_HOST=‘192.168.1.110‘,
   > MASTER_USER=‘server2‘,
   > MASTER_PASSWORD=‘server2‘;
mysql > START SLAVE;

在server2上:
# mysql
   > CHANGE MASTER TO
   > MASTER_HOST=‘192.168.1.108‘,
   > MASTER_USER=‘server1‘,
   > MASTER_PASSWORD=‘server1‘;
mysql > START SLAVE;

6.查看,并验证:
分别在两个数据库服务器上查看
mysql > SHOW SLAVE STATUS\G;
然后查看数据库和表,你会发现内容是一样的,这样就是整个主主Mysql的架构的配置过程。

时间: 2024-10-12 01:37:40

Mysql互为主从架构配置的相关文章

Keepalived+Mysql互为主从高可用安装配置

Keepalived+Mysql互为主从高可用安装配置环境介绍:keepalived_vip=192.168.1.210    (写虚拟ip)mysql_master01      eth0:192.168.1.211  eth1:172.20.27.211 (1核1G)mysql_master02      eth0:192.168.1.212  eth1:172.20.27.212 (1核1G) 1.安装mysql数据库(所有节点安装)  //此处省略安装mysql服务2.编辑my.cnf配

MySQL互为主从模型实现基于SSL复制

一.MySQL复制 1.MySQL复制过程描述 MySQL主服务器上每一次发生的有可能产生修改或者产生修改的操作都会在主服务器上基于语句或基于行写入二进制日志,从服务器会在此期间启用一个IO线程不断的向主服务器发送请求,主服务器的二进制日志一但有更新,则会启用binlog dump线程,把数据发送给对方,从服务器接收到数据后则会将二进制日志的内容同步至本地的中继日志保存,而后启用SQL线程,将日志中的操作语句写入本地从服务器数据库: 2.mysql复制的同步和异步 同步:客户端向主服务器执行一条

KeepAlived+MySQL互为主从

解决Master单点问题,两台mysql互为主备,双向replication.当一master挂了,则将slave切换为master,继续工作.好,给定两台机器 主机A:192.168.1.201 主机B:192.168.1.202 一.互为主从 1.配置 主机A上,vim /etc/my.cnf,添加: [mysqld] log-bin=mysql-bin server-id=1 #服务id要和B不同 binlog_do_db=db1 master-host = 192.168.1.202 #

Linux下 Mysql 互为主从

系统环境:CentOS 6.5 master1:192.168.100.204 master2:192.168.100.205 mysql版本:mysql-5.6.19 注:mysql的5.5以下的版本和5.5以上的版本配置方法不一样 以下两个节点安装 1:防火墙打开相应端口 #  /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT #  /etc/rc.d/init.d/iptables save 2:安装相关依赖包 #  yum -y

Mysql互为主从

Mysql互为主从环境:系统环境:centos6.5_x64Mysql-A:172.18.49.10Mysql-B:172.18.49.2Mysql安装已经完成.两台mysql上时间同步: ntpdate pool.ntp.org 在A上操作: vi /etc/my.cnf 添加:log-bin=mysql-bin //开启二进制日志server-id=1 //mysql的idrelay_log=relaylogs service mysqld restart 登录mysql,新建同步用户: m

Mysql互为主从+keepalived实现高可用性(1)

1)规则: 1) db-51    192.168.4.51  Mysql 5.7 2) db-52 192.168.4.52 Mysql 5.7 vip: 192.168.4.50 2)创建Mysql互为主从: 1.在192.168.4.51 (db-51)安装Mysql,创建同步复制用户(用于192.168.4.52(db-52)主机同步数据) 1 [[email protected]51 ~]#tar -xf mysql-5.7.17.tar -C mysql 2 [[email prot

linux下mysql数据库主从同步配置

说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备篇: 说明:在两台MySQL服务器192.168.21.128和192.168.21.129上分别进行如下操作 备注: 作为主从服务器的MySQL版本建议使用同一版本! 或者必须保证主服务器的MySQL版本要高于从服务器的MySQL版本! 一.配置好IP.DNS .网关,确保使用远程连接工具能够连接

MySQL Ubuntu 主从同步配置

MySQL Ubuntu 主从同步配置 一.在两台Linux机器上安装MySQL 二.Master主服务器配置(192.168.1.3) 1.编辑my.cnf编(命令查找文件位置:find / -name my.cnf) vi /etc/mysql/my.cnf 在[mysqld]中添加: server-id = 1 log_bin = master-bin log_bin_index = master-bin.index binlog_do_db = my_data binlog_ignore

Mysql互为主从问题

我搭建的是mysql 互为主从 复制 两台机器的mysql环境完全相同 第一部分测试: B为master  A为slave的同步测试 在B上创建表lian,并插入数据mysql> create table lian (a int,b char(10)); mysql> insert into lian (a,b)values(22,'hahah'); mysql> show tables;+------+| Tables_in_test |+------+| lian