一、首先两台服务器安装好mysql数据库环境

参照linux rpm方式安装mysql5.1

https://www.cnblogs.com/sky-cheng/p/10564604.html

二、在两台mysql上都创建复制账号

mysql> grant replication slave,replication client on *.* to 'repl'@'%' identified by 'Zaq1xsw@';
Query OK, rows affected, warning (0.00 sec)
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A Database changed
mysql> select user,host from user;
+---------------+-----------+
| user | host |
+---------------+-----------+
| repl | % |
| root | % |
| mysql.session | localhost |
| mysql.sys | localhost |
+---------------+-----------+
rows in set (0.00 sec)

三、两台mysql服务器上上分别设置不同的Server_id,同时都开启二进制日志

mysql> show variables like '%server_id%';
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| server_id | 0 |
| server_id_bits | 32 |
+----------------+-------+

如果配置文件没有设置server_id参数,则默认都是0

编辑/etc/my.cnf

添加service_id,它的值可以跟服务器的IP最后一位数字一样,这样就能保证内网中的服务器ID不重复。一台设置

server_id=103
log-bin=master
binlog_format=row

另一台

server_id=
log-bin=master-
binlog_format=row

四、重启两台服务器的mysql服务

五、两台服务器分别执行change master操作

首先获取第一台数据库日志文件名称和偏移量:

mysql> show master status\G;
*************************** . row ***************************
File: master-1.000001
Position:
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
row in set (0.00 sec) ERROR:
No query specified

在另外一台上执行

mysql> change master
-> to
-> master_host='172.28.18.69',
-> master_port=,
-> master_user='repl',
-> master_password='xxxxxxxxx',
-> master_log_file='master-1.000001',
-> master_log_pos=;
Query OK, rows affected, warnings (0.20 sec)

开启这台上的主从复制

mysql> start slave;
Query OK, rows affected (0.01 sec)

查看从库状态

mysql> show slave status\G
*************************** . row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.28.18.69
Master_User: repl
Master_Port:
Connect_Retry:
Master_Log_File: master-1.000001
Read_Master_Log_Pos:
Relay_Log_File: node2-relay-bin.
Relay_Log_Pos:
Relay_Master_Log_File: master-1.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno:
Last_Error:
Skip_Counter:
Exec_Master_Log_Pos:
Relay_Log_Space:
Until_Condition: None
Until_Log_File:
Until_Log_Pos:
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master:
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno:
Last_IO_Error:
Last_SQL_Errno:
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id:
Master_UUID: c76bbd08-7acd-11e9-badd-14feb5dc2c77
Master_Info_File: /home/mysql-5.7./data/master.info
SQL_Delay:
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count:
Master_Bind:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes从库同步线程启动成功,同样在另外一台服务器上也执行上述的操作,实际上主主配置就是互为主从配置。配置完后,在两台服务器上都可以查看主库和从库的状态 六、测试数据
在其中一台上插入数据,另外一台立即可以同步数据,表示配置成功。
首先在两台服务器上分别执行查询,看看表里数据是否一致
mysql> select * from test;
+------+------+
| id | name |
+------+------+
| | aaaa |
| | bbbb |
| | ccc |
+------+------+
rows in set (0.00 sec)
mysql> select * from test;
+------+------+
| id | name |
+------+------+
| | aaaa |
| | bbbb |
| | ccc |
+------+------+

两台服务器数据一致,在其中一台插入数据

mysql> insert into test values(,'dddd');
Query OK, row affected (0.03 sec) mysql> select * from test;
+------+------+
| id | name |
+------+------+
| | aaaa |
| | bbbb |
| | ccc |
| | dddd |
+------+------+
rows in set (0.00 sec)

另外一台查询

mysql> select * from test;
+------+------+
| id | name |
+------+------+
| | aaaa |
| | bbbb |
| | ccc |
| | dddd |
+------+------+
rows in set (0.00 sec)

插入的数据已经同步了

再在这台服务器上插入数据

mysql> insert into test values(,'eeee');
Query OK, row affected (0.02 sec) mysql> select * form test
-> ;
ERROR (): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'form test' at line
mysql> select * from test;
+------+------+
| id | name |
+------+------+
| | aaaa |
| | bbbb |
| | ccc |
| | dddd |
| | eeee |
+------+------+
rows in set (0.00 sec)

在另外一台查询

mysql> select * from test;
+------+------+
| id | name |
+------+------+
| | aaaa |
| | bbbb |
| | ccc |
| | dddd |
| | eeee |
+------+------+
rows in set (0.00 sec)

数据同步了,至此mysql主主配置成功。

												

mysql5.7.26做主主配置的更多相关文章

  1. mysql5.7.26做主从复制配置

    一.首先两台服务器安装好mysql数据库环境 参照linux rpm方式安装mysql5.1 https://www.cnblogs.com/sky-cheng/p/10564604.html 二.主 ...

  2. MySQL5.7.26二进制安装

    1.安装系统版本 2.解压更换路径 tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz mv mysql-5.7.26-linux-glibc2.12- ...

  3. MySQL双主配置

    MySQL双主配置 准备环境:服务器操作系统为RHEL6.4 x86_64,为最小化安装.主机A和主机B均关闭防火墙和SELINUX ,IP地址分别为192.168.131.129和192.168.1 ...

  4. 利用JDBC连接Eclipse和mySQL5.1.26数据库

    初学JDBC,看了看书,自己动手的时候还是有很多地方有问题,最终终于解决了实现了数据库的连接.现将整个步骤描述如下: 环境:mySQL5.1.26(win 32bit), Eclipse JavaEE ...

  5. linux 安装 mysql-5.6.26

    linux安装mysql-5.6.26 查看工具:winscp 下载地址 http://mirrors.sohu.com/mysql/MySQL-5.6/ 文件: mysql-5.6.26-linux ...

  6. Ubuntu14.04编译安装mysql5.6.26

    Ubuntu14.04编译安装mysql5.6.26 (1)安装编译源码需要的包 sudo apt-get install make cmake gcc g++ bison libncurses5-d ...

  7. CentOS 6.5 源码安装MySQL5.6.26

    1:下载安装cmake (mysql5.5以后是通过cmake来编译的) 2:创建mysql的安装目录及数据库存放目录 #mkdir /usr/mysql                 //安装my ...

  8. MySQL Replication, 主从和双主配置

    MySQL Replication, 主从和双主配置 MySQL的Replication是一种多个MySQL的数据库做主从同步的方案,特点是异步,广泛用在各种对MySQL有更高性能,更高可靠性要求的场 ...

  9. keepalived主从及双主配置

    高可用有2中方式. 1.Nginx+keepalived 主从配置 这种方案,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候, ...

随机推荐

  1. java JIT

    JVM 即时编译器即时编译器 (Just In Time Compiler) 简称JIT JAVA程序最初是通过解释器 (Interpreter) 进行解释执行的,当 JVM 发现某个方法或代码块运行 ...

  2. Dark 面向对象

    1 继承 使用extends继承一个类 子类会继承父类可见的属性和方法,不包含构造方法 可以复写父类的方法 单继承,多态性 构造方法 子类的构造方法会默认调用父类的无名无参构造方法 如果父类没有无名无 ...

  3. 线性回归linear regression(python脚本实现)

    python机器学习-乳腺癌细胞挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...

  4. python异常处理--try except else raise finally

    转载自https://www.cnblogs.com/bokeyuan11/p/9146607.html 写程序时遇到异常情况,程序可能无法正常运行.此时就需要引入异常处理 1.try ...exce ...

  5. MongoDB简单查询语句<平时使用语录,持续更新>

    MongoDB查询语句 --查询近三个月的客户使用量  aggregate:使用聚合  match:过滤  group分组   -- mysql中select org_code as 近三个月使用商户 ...

  6. Promise.then链式调用

    let a = new Promise((resolve,reject)=>{ resolve(1) }).then((r)=>{console.log(r)}).then(()=> ...

  7. 51N皇后

    题目:n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击.给定一个整数 n,返回所有不同的 n 皇后问题的解决方案.每一种解法包含一个明确的 n 皇后问题的 ...

  8. nginx提示地址或端口被占用解决

    nginx提示地址或端口被占用解决 今天小编在启动nginx 的时候遇到如下的错误 Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed ...

  9. Linux 常用命令之 mv cp scp

    1.mv 命令是move的缩写,用于文件(或文件夹)移动的. 1)将 luna 目录下的文件 a.txt,移动到 miracle 目录下: mv ./luna/a.txt ./miracle/ 2)将 ...

  10. rhel安装ambari

    RHEL/CentOS/Oracle Linux 6 On a server host that has Internet access, use a command line editor to p ...