注意:最好不要用innodedb来同步数据库,要用databus来同步数据库,数据量大要用上mycat中间件

Mysql主主同步环境部署:

centos 7.4

三台云主机:
mysql1 :10.1.1.142  
mysql2 :10.1.1.106
nginx: 10.1.1.152 外网地址:114.115.174.210 两台都安装mysql 1 . 安装新版mysql前,需将系统自带的mariadb-lib卸载 [root@slave mytmp]# rpm -qa|grep mariadb
mariadb-libs-5.5.44-2.el7.centos.x86_64
[root@slave mytmp]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64 2 . 解压安装mysql mysql官方网站:http://www.mysql.com 下载 tar -zxf mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar [root@slave mytmp]# tar -zxf mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar
[root@slave mytmp]# ls
mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar mysql-community-libs-5.7.16-1.el7.x86_64.rpm
mysql-community-client-5.7.16-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
mysql-community-common-5.7.16-1.el7.x86_64.rpm mysql-community-minimal-debuginfo-5.7.16-1.el7.x86_64.rpm
mysql-community-devel-5.7.16-1.el7.x86_64.rpm mysql-community-server-5.7.16-1.el7.x86_64.rpm
mysql-community-embedded-5.7.16-1.el7.x86_64.rpm mysql-community-server-minimal-5.7.16-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.16-1.el7.x86_64.rpm mysql-community-test-5.7.16-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.16-1.el7.x86_64.rpm 使用rpm -ivh命令依次进行安装 rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm 3 . 登录到mysql,更改root用户的密码 通过 cat ~/.mysql_secret 命令可以查看初始密码 [root@slave mytmp]# mysql -uroot -p
Enter password: mysql> set password=password(''); 4 . 创建用户,及作权限分配 mysql> CREATE USER 'zz'@'%' IDENTIFIED BY ''; mysql> GRANT ALL PRIVILEGES ON *.* TO 'zz'@'%'; mysql> FULSH PRIVILEGES; 5 . 远程登陆授权 mysql> grant all privileges on *.* to 'root'@'%' identified by 'j0!uN@Da12tA&*ba3S&e'; mysql> flush privileges; 6 . 设置mysql开机启动 开机启动
systemctl enable mysqld.service mysql双主模式配置: 要实现互为主从,就必须 mster1-->master2设置主从同步 同时 master2--->master1 也设置主从同步 四、Mysql主主同步环境部署 ---------mysql1服务器操作记录---------- 在my.cnf文件的[mysqld]配置区域添加下面内容:
[root@master1 ~]# vim /usr/local/mysql/my.cnf
server-id = 1
log-bin = mysql-bin
sync_binlog = 1
binlog_checksum = none
binlog_format = mixed
auto-increment-increment = 2
auto-increment-offset = 1
slave-skip-errors = all [root@master1 ~]# /etc/init.d/mysql restart
Shutting down MySQL. SUCCESS!
Starting MySQL.. SUCCESS! 创建一个复制用户
出了小问题,由于之前root用户的密码设置过于简单在创建复制用户时报如下错误 mysql> grant replication slave on *.* to 'root'@'10.1.1.%' identified by 'j0!uN@Da12tA&*ba3S&e'; mysql> alter user 'root'@'localhost' identified by 'j0!uN@Da12tA&*ba3S&e';
Query OK, 0 rows affected (0.00 sec) mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> grant replication slave on *.* to 'root'@'10.1.1.%' identified by 'j0!uN@Da12tA&*ba3S&e'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec) 锁表,待同步配置完成在解锁 mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
查看当前的binlog以及数据所在位置 mysql> show master status; +------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000006 | 996 | | | |
+------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec) -------master2服务器操作记录------- 在my.cnf文件的[mysqld]配置区域添加下面内容: [root@master2 ~]# vim /usr/local/mysql/my.cnf
server-id = 2
log-bin = mysql-bin
sync_binlog = 1
binlog_checksum = none
binlog_format = mixed
auto-increment-increment = 2
auto-increment-offset = 2
slave-skip-errors = all [root@master2 ~]# /etc/init.d/mysql restart
Shutting down MySQL.. SUCCESS!
Starting MySQL.. SUCCESS!
mysql> grant replication slave on *.* to repl@'10.0.0.%' identified by '1qaz@WSX';
Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
? mysql> flush tables with read lock;
? Query OK, 0 rows affected (0.00 sec)
查看 master情况
mysql> show master status; +------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 150 | | | |
+------------------+----------+--------------+------------------+-------------------+ 分别开启同步对方 ---------------master1服务器做同步操作---------------
mysql> unlock tables; //先解锁,将对方数据同步到自己的数据库中
mysql> stop slave;
mysql> change master to master_host='10.1.1.142',master_user='root',master_password='j0!uN@Da12tA&*ba3S&e',master_log_file='mysql-bin.000002',master_log_pos=150;
Query OK, 0 rows affected, 2 warnings (0.01 sec)
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
?
查看两个线程状态是否为YES?
mysql> show slave status \G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
-------------master2服务器做同步操作---------------
mysql> unlock tables; //先解锁,将对方数据同步到自己的数据库中
mysql> slave stop;
mysql> change master to master_host='10.1.1.106',master_user='root',master_password='j0!uN@Da12tA&*ba3S&e',master_log_file='mysql-bin.000002',master_log_pos=150;
Query OK, 0 rows affected, 2 warnings (0.06 sec) mysql> start slave;
Query OK, 0 rows affected (0.01 sec) mysql> show slave status \G;
Master_Log_File: mysql-bin.000006
Read_Master_Log_Pos: 996
Relay_Log_File: master2-relay-bin.000002
Relay_Log_Pos: 312
Relay_Master_Log_File: mysql-bin.000006
Slave_IO_Running: Yes
Slave_SQL_Running: Yes 以上表明双方已经实现了mysql主主同步。 在master1数据库上写入新数据 mysql> unlock tables; Query OK, 0 rows affected (0.00 sec) mysql> create database test;
Query OK, 1 row affected (0.01 sec) mysql> grant all privileges on test.* TO 'root'@'%' identified by 'jenkins@123' with grant option;
Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec) mysql> use test;
Database changed mysql> create table if not exists kaifa ( id int(10) PRIMARY KEY AUTO_INCREMENT, name varchar(50) NOT NULL);
Query OK, 0 rows affected (0.04 sec)
mysql> insert into kaifa values(2,'join');
Query OK, 1 row affected (0.00 sec)
mysql> insert into kaifa values(1,'bob');
Query OK, 1 row affected (0.00 sec)
mysql> select * from kaifa;
+----+-----------+
| id | name |
+----+-----------+
| 1 | bob |
| 2 | join |
+----+-----------+
2 rows in set (0.00 sec) 然后在master2数据库上查看,发现数据已经同步过来了!
mysql> select * from test.kaifa;
+----+-----------+
| id | name |
+----+-----------+
| 1 | bob |
| 2 | join |
+----+-----------+
2 rows in set (0.00 sec)
2)在master2数据库上写入新数据
mysql> create database ceshi;
Query OK, 1 row affected (0.00 sec) mysql> insert into test.kaifa values(3,'nginx'),(4,'hadoop');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0 然后在master1数据库上查看,发现数据也已经同步过来了!
mysql> show databases;+--------------------+
| Database |
+--------------------+
| information_schema |
| ceshi |
| test |
| mysql |
| performance_schema |
| test |
+--------------------+6 rows in set (0.00 sec) mysql> select * from test.kaifa;
+----+-----------+
| id | name |
+----+-----------+
| 1 | bob |
| 2 | join |
| 3 | kaifa |
| 4 | kaifa |
+----+-----------+
4 rows in set (0.00 sec) 至此,Mysql主主同步环境已经实现。 nginx搭建; 1.在两台数据库添加权限
GRANT ALL ON *.* TO 'root'@'10.1.1.152.%' IDENTIFIED BY 'j0!uN@Da12tA&*ba3S&e';
FLUSH PRIVILEGES; 2. [root@ecs-01 ~]# wget http://nginx.org/download/nginx-1.9.9.tar.gz
[root@ecs-01 ~]# tar xf nginx-1.9.9.tar.gz
[root@ecs-01 ~]# cd nginx-1.9.9
[root@ecs-01 nginx-1.9.9]# ./configure --prefix=/usr/local/nginx --with-stream ----with-http_stub_status_module --with-http_ssl_module [root@ecs-01 nginx-1.9.9]# make
[root@ecs-01 nginx-1.9.9]# make install --with-stream ---支持TCP的意思 [root@ecs-01 conf]# vi /usr/local/nginx/conf/nginx.conf 加入类似于http一样的模块: stream { upstream mysql { #hash $remote_addr consistent; server 10.1.1.124:3306 weight=5;
server 10.1.1.204:3306 weight=5; } server { listen 3306; proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass mysql; } } /usr/local/nginx/sbin/nginx 启动
/usr/local/nginx/sbin/nginx -s reload 重启 测试: 在192.168.43.75 这台上远程连接nginx服务器 mysql -uroot -pj0!uN@Da12tA&*ba3S&e -h 192.168.88 -P 7306

最新文章

  1. HDU 2227 Find the nondecreasing subsequences (DP+树状数组+离散化)
  2. promise实现原理
  3. Visual Studio 中的快捷键
  4. 生成N个二进制位的组合
  5. session 的用法
  6. 【C语言入门教程】1.1 基本程序结构
  7. 【转】SVN建库方法
  8. 黑马程序员——JAVA基础之程序控制流结构之判断结构,选择结构
  9. Umbraco中的权限体系结构
  10. Phalcon的学习篇-phalcon和devtools的安装和设置
  11. Objective-C学习篇03—继承
  12. 获取EditText的光标位置
  13. 常用的HTTP状态码如下
  14. 自己用到的相关Linux命令,谨以记录
  15. 20162318 实验二《Java面向对象程序设计》实验报告
  16. ratelimit.go
  17. Centos7安装部署Zabbix3.4
  18. STM32 F103 F407 F429 F767对比图
  19. Ant build.xml详解
  20. 整体二分求动态区间第k大

热门文章

  1. da面板修改SSH端口号
  2. 使用dsoframer演示ppt
  3. mysql 导入sqlserver数据库
  4. Cmd有关IP的部分命令
  5. java 学习笔记(三)ZooKeeper集群搭建实例,以及集成dubbo时的配置 (转)
  6. BBS-media配置
  7. jsp模糊查询
  8. 《剑指offer》算法题第六天
  9. Word:不显示图片 + 清空“最近使用的文档”列表
  10. Confluence 6.15 博客页面(Blog Posts)宏参数