Mysql 5.7主主复制配置
MySQL5.7主主复制配置
主机1IP:192.168.1.2
主机2IP:192.168.1.4
一、首先安装MySQL 5.7
1、卸载两台主机系统中已经有的mysql相关软件包
rpm -qa | grep -i mysql
yum remove mysql(相关软件包名称) -y
2、分别在两台主机系统中执行以下命令
在http://dev.mysql.com/downloads/repo/yum/站点下载mysql57-community-release-el6-8.noarch
rpm -ivh mysql57-community-release-el6-8.noarch.rpm
yum -y install mysql.x86_64 mysql-server.x86_64 mysql-devel.x86_64
3、分别在两台主机上执行以下语句,初始化
mkdir /home/mysql
mysqld --initialize-insecure --user=mysql --datadir=/home/mysql
备注:
如果你用 --initialize 初始化data目录,请用如下命令登录服务
mysql -u root -p
执行上面命令,会提示输入密码,输入随机生成的密码即可。
如果你不知道这个随机密码,请查看error log文件查找这个随机密码。
如果用 --initialize-insecure 初始化data目录,请用root用登录,并不需要输入密码就可以登录,如下命令:
mysql -u root --skip-password
Mysql5.7忘记root密码及mysql5.7修改root密码的方法的相关资料
a、关闭正在运行的 MySQL :service mysql stop
b、运行:mysqld_safe --skip-grant-tables &
c、为了安全可以这样禁止远程连接:mysqld_safe --skip-grant-tables --skip-networking &
d、使用mysql连接server:mysql -p
e、更改密码:
mysql> update mysql.user set authentication_string=password('wclwcw') where user='root' and Host = 'localhost';
特别提醒注意的一点是,新版的mysql数据库下的user表中已经没有Password字段了
而是将加密后的用户密码存储于authentication_string字段
4、分别登录修改主机1、主机2的mysql密码
输入mysql回车,进入mysql环境
set password = password ('wclwcw');
flush privileges;
5、在主机1(192.168.1.2)的/etc/my.cnf中配置以下内容
[mysqld]
datadir=/home/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
server-id = 1
auto-increment-increment = 2
auto-increment-offset = 1
explicit_defaults_for_timestamp = 1
character_set_server=utf8
interactive_timeout = 57600
log-bin = mysql-bin
expire-logs-days = 100
replicate-do-db = wang #需要同步的数据库
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
slave-skip-errors=all
log-slave-updates
symbolic-links=0
skip-name-resolve
6、在主机1(192.168.1.4)的/etc/my.cnf中配置以下内容
[mysqld]
datadir=/home/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
server-id = 2
auto-increment-increment = 2
auto-increment-offset = 2
character_set_server=utf8
interactive_timeout = 57600
log-bin = mysql-bin
expire-logs-days = 100
replicate-do-db = wang #需要同步的数据库
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
slave-skip-errors=all
log-slave-updates
symbolic-links=0
skip-name-resolve
备注:主机1和主机2都只有server-id不同和 auto-increment- offset不同
auto-increment-offset是用来设定数据库中自动增长的起点的,回为这两能
服务器都设定了一次自动增长值2,所以它们的起点必须得不同,这样才能避
免两台服务器数据同步时出现主键冲突replicate-do-db 指定同步的数据库,
我们只在两台服务器间同步wang数据库
另:auto-increment-increment的值应设为整个结构中服务器的总数,本案例用到两台服务器,所以值设为2
7、分别重启主机1,主机2的mysql服务,使配置生效
service mysqld restart
8、在主机1(192.168.1.2)上创建数据库和表并插入数据
mysql -uroot -pwclwcw
create database wang;
use wang;
create table wclwcw(id int,name varchar(100));
insert into wclwcw value (1,'tom')
9、相互授权
在主机1(192.168.1.2)上
GRANT REPLICATION SLAVE ON *.* TO 'wang'@'192.168.1.4' IDENTIFIED BY 'wclwcw'
flush privileges;
在主机2(192.168.1.4)上
GRANT REPLICATION SLAVE ON *.* TO 'wang'@'192.168.1.2' IDENTIFIED BY 'wclwcw'
flush privileges;
10、互告bin-log信息
a、在主机1(192.168.1.2)上
mysql> show master status;
+------------------+----------+--------------+--------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+--------------------------+
| mysql-bin.000006 | 106 | | mysql,information_schema |
+------------------+----------+--------------+--------------------------+
b、在主机2(192.168.1.4)上
mysql> show master status;
+------------------+----------+--------------+--------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+--------------------------+
| mysql-bin.000008 | 192 | | mysql,information_schema |
+------------------+----------+--------------+--------------------------+
c、在主机1(192.168.1.2)上
mysql> change master to master_host='192.168.1.4',master_user='wang',master_password='wclwcw',master_log_file='mysql-bin.000008',master_log_pos=194;
d、在主机2(192.168.1.4)上
mysql> change master to master_host='192.168.1.2',master_user='wang',master_password='wclwcw',master_log_file='mysql-bin.000007',master_log_pos=1082;
11、在主机1、主机2两服务器都执行以下命令
mysql> start slave;
12、查看状态
主机1上(192.168.1.2)
mysql> show slave status\G
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.4
Master_User: zz
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 778
Relay_Log_File: template-relay-bin.000002
Relay_Log_Pos: 780
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: wang
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 778
Relay_Log_Space: 990
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 2
Master_UUID: e6a7bb8f-4fe6-11e6-abd0-fa163e5cb863
Master_Info_File: /home/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
在主机2(192.168.1.4)上
mysql> show slave status\G;
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.2
Master_User: zz
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 769
Relay_Log_File: template-relay-bin.000002
Relay_Log_Pos: 484
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: wang
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 769
Relay_Log_Space: 694
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 10824007-4fe4-11e6-a4ff-fa163ea94ff8
Master_Info_File: /home/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
当看到了两个yes,即:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
说明已经配置成功了,同时查看主机2中是否已经有主机1中的数据库
其他
同步数据
用test做的实验,导出将test.sql文件从1.4服务器拷贝到1.2服务器
备份数据前先锁表,保证数据一致性
mysql> FLUSH TABLES WITH READ LOCK;
# mysqldump -uroot -p123456 test> /tmp/test.sql;
mysql> UNLOCK TABLES;
scp /tmp/test.sql root@192.168.1.2:/tmp
在搭建mysql master-slave复制环境时,一切都正常,但是在slave上执行:show slave status\G; 时,出现下面的状况:
Slave_IO_Running: Connecting
Slave_SQL_Running: Yes
一直无法进行正确的复制。查看错误日志文件显示:Connecting error_code:2003
看来是slave 没有连接上master,在网上搜索一下,网上文章大都只是指出了可能的三种错误:
1. 网络不通
2. 密码不对
3. pos不对
我测试网络是可以ping通的。密码也对,pos也对。
后来想了很久,突然想起来了防火墙好像没有关闭!一检查果然。
所以第四种错误是:
4. 防火墙没有关闭。
相关命令如下:
关闭命令: service iptables stop
永久关闭防火墙:chkconfig iptables off
两个命令同时运行,运行完成后查看防火墙关闭状态
service iptables status
另外顺便也将 selinux关闭掉:
1 vi /etc/selinux/config
2 #SELINUX=enforcing #注释掉
3 #SELINUXTYPE=targeted #注释掉
4 SELINUX=disabled #增加
5 :wq #保存,关闭。
6 shutdown -r now #重启系统
查看SELinux的状态:
getenforce
Mysql 5.7主主复制配置的更多相关文章
- MySQL数据库的主从同步复制配置
一.主从同步机制原理 MYSQL主从同步是在MySQL主从复制(Master-Slave Replication)基础上实现的,通过设置在Master MySQL上的binlog(使其处于打开状态), ...
- MySQL热机双备之双主同步复制配置
此配置方案来源于csdn前辈博客,奈何找不到出处了,抱拳!!! 1. MySQL同步机制概述 MySQL支持单向.异步复制,复制过程中一台服务器充当主服务器,一台或多台服务器充当从服务器,双主同步要 ...
- mysql 8.0 MGR组复制配置
一.配置组复制的步骤 1.初始化数据目录 2.配置主服务器(primary) 3.配置辅助服务器(secondaries) 4.启动mysql实例 5.安装组复制插件(primary and seco ...
- MySQL 主从复制:基于二进制文件复制配置详解
MySQL-主从复制:基于二进制文件复制详解 前言 主从复制是指把一个MySQL的数据库服务器作为主服务器(master),然后把master的数据复制到一个或者多个MySQL数据库服务器作为从服务器 ...
- mysql数据库主从及主主复制配置演示
实验系统:CentOS 6.6_x86_64 实验前提:提前准备好编译环境,防火墙和selinux都关闭 实验说明:本实验共有2台主机,IP分配如拓扑 实验软件:mariadb-10.0.20 实验拓 ...
- mysql主主复制(双主复制)配置步骤
以前我们介绍的都是主从复制,这里给各位介绍一个双主复制了,下面都希望两个主服务器数据自动复制的话可参考一下此文章. MySQL主主复制结构区别于主从复制结构.在主主复制结构中,两台服务器的任何一台 ...
- 配置percona mysql server 5.7基于gtid主主复制架构
配置mysql基于gtid主主复制架构 环境: 操作系统 centos7. x86_64 mysql版本:Percona-Server-- 测试环境: node1 10.11.0.210 node2 ...
- MySQL主主复制(双主复制)配置过程介绍
一.修改配置文件my.cnf服务器A(172.16.16.70)配置如下server_id = 70socket = /tmp/mysql.sockinnodb_buffer_pool_size = ...
- Mysql Group Replication 简介及单主模式组复制配置【转】
一 Mysql Group Replication简介 Mysql Group Replication(MGR)是一个全新的高可用和高扩张的MySQL集群服务. 高一致性,基于原生复制及p ...
随机推荐
- 51nod 1533 && CF538F
题目:难以简述,请传送门 神犇题解Ⅰ 神犇题解Ⅱ 好劲啊跪在地上..完全没接触过K叉树的性质.. 对于每个询问,我们并不关心叶节点,只关心其他的节点.而一个完整K叉树的内节点个数是O(n/k)的, ...
- Hive- Hive Web Interface
当我们安装好hive时候,我们启动hive的UI界面的时候,命令: hive –-service hwi ,报错,没有war包 我们查看hive/conf/hive-default.xml.templ ...
- 假日旅游CSS网页模板
假日旅游CSS3网页模板,蓝色,旅游,假日,公司,设计,主页,HTML,DIV+CSS,模板下载. http://www.huiyi8.com/lvyoumuban/css/
- POJ 2151 Check the difficulty of problems:概率dp【至少】
题目链接:http://poj.org/problem?id=2151 题意: 一次ACM比赛,有t支队伍,比赛共m道题. 第i支队伍做出第j道题的概率为p[i][j]. 问你所有队伍都至少做出一道, ...
- Centos6.4 相关配置记录
1.手动开启eth0网卡 在虚拟机里装完CentOS6.4之后,使用NAT模式,输入ifconfig发现没有IP地址,查找了一下资料,原来是: 在CentOS 6.x的版本中,默认网卡是不开启的,需要 ...
- hdu-5805 NanoApe Loves Sequence(线段树+概率期望)
题目链接: NanoApe Loves Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 ...
- AtCoder AGC #3 Virtual Participation
Havana真好听qwq AB题就不写了 SB C.BBuBBBlesort! 有一个长度为$n$的数列 你每次可以用两种操作 1.交换两个相邻元素 2.交换两个隔且仅隔了一个的元素 求把数列排成有序 ...
- vue实现图片的上传和删除
目录 1 UI库使用ElementUI 2 后端使用Express + formidable模块 1 UI库使用ElementUI 安装ElementUI $ npm install --save-d ...
- 《c# 实现p2p文件分享与传输系统》 二、 设计 - 续(NAT穿透)
c#实现P2P文件分享与传输系统 二.设计 - 续(NAT穿透) 首先要抱歉,因为这些日子较忙,没有写文章,这个系列拖了很久,现在开始继续. 上一篇文章介绍了p2p系统Tracker Server和 ...
- C# FileStream 按大小分段读取文本内容
该例子首先在C盘根目录创建一个名为'file1.txt'的文本文件. 然后再运行该例子.. 完整代码如下: 引入命名空间: [csharp] view plain copy print? using ...