栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Nginx + MySql5.7 主从 主主 高可用集群环境搭建

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Nginx + MySql5.7 主从 主主 高可用集群环境搭建

一、准备
主机作用系统版本MySQL版本
192.168.9.106主 /从CentOS7.6MySQL5.7.35
192.168.9.107从/主CentOS7.6MySQL5.7.35
两台机器安装好 MySQL5.7.35,参考文章如下:
https://blog.csdn.net/CsethCRM/article/details/119418841
二 在 192.168.9.106 (主)上配置 1. 在192.168.9.106(主) 上配置 my.cnf
vim /etc/my.cnf
在 [mysqld] 下边 添加 如下配置:

#开启二进制日志
log-bin=mysql-bin
#任意自然数n,只要保证两台MySQL主机不重复就可以了。
server-id=663
2. 登录 9.106 的MySQL
mysql -u root -p
输入自己的密码
3. 创建 repl 用户,指定该用户只能在主库 192.168.9.106 上使用 Repl123!@# 密码登录
mysql> create user 'repl'@'192.168.9.106' identified by 'Repl123!@#';
4. 为 repl 用户赋予 REPLICATION SLAVE 权限。
mysql> grant replication slave on *.* to 'repl'@'192.168.9.106';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'repl'@'%' IDENTIFIED BY 'Repl123!@#' WITH GRANT OPTION;
5. 查看用户
mysql> select user,host from mysql.user;
6.查看 master 状态
mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

注意:如果遇到 empty set 1.请检查一下配置是否按照示例中106的配置进行配置 2.重启一下MySQL再看看 三、 在 192.168.9.107 (从)上配置 1. 在192.168.9.107(从) 上配置my.cnf
vim /etc/my.cnf
在 [mysqld] 下边 添加 如下配置:
#开启二进制日志
log-bin=mysql-bin
#任意自然数n,只要保证两台MySQL主机不重复就可以了。
server-id=662
2. 配置连接主服务器的信息
mysql -u root -p
输入自己的密码
mysql> change master to master_host='192.168.9.106', master_user='repl',MASTER_PORT =3306,master_password='Repl123!@#',master_log_file='mysql-bin.000002',master_log_pos=154;

注意:
master_log_file 一定要对应 106(主)机器 show master status 中的 File 字段;  master_log_pos 一定要对应 106(主)机器 show master status 中的 Position 154
mysql> start slave;
3. 查看状态
mysql> show slave status G

主要看以下消息有两个YES即可 :

             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
恭喜您,截止目前,MySQL 主(9.106)从(9.107)已经 配置完成。 在9.106 上的一切操作会近实时 同步到9.107的DB中。 四、MYSQL 主主配置 (把192.168.9.107也配置成作为主,192.168.9.106配置成为从);192.168.9.106 和 192.168.9.107 互为主从;组成 主主 1. 查看状态 - (192.168.9.107上操作):
mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      964 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
2. 创建 repl 用户,指定该用户只能在主库 192.168.9.106 上使用 Repl123!@# 密码登录 - (192.168.9.107上操作)
mysql> create user 'repl107'@'192.168.9.107' identified by 'Repl123!@#';
3.为 repl 用户赋予 REPLICATION SLAVE 权限 - (192.168.9.107上操作)
mysql> grant replication slave on *.* to 'repl107'@'192.168.9.107';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'repl107'@'%' IDENTIFIED BY 'Repl123!@#' WITH GRANT OPTION;
4.刷新权限 - (192.168.9.107上操作)
Flush privileges;
5.把9.106 设置为9.107的从 - (192.168.9.106上操作)
mysql> change master to master_host='192.168.9.107', master_user='repl107',MASTER_PORT =3306,master_password='Repl123!@#',master_log_file='mysql-bin.000001',master_log_pos=964;
mysql> start slave;
mysql> show slave status G
主要看以下消息有两个YES即可 :

             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
截止目前 192.168.9.106 和 192.168.9.107 主主 集群已经成功搭建,两台机器无论在那一台上的增删改查 都会 近实时同步到另一台; 但是还不能做到高可用,如果要做到高可用,继续往下看; 五、利用 Nginx 配置 高可用 主主 负载均衡 1.机器准备
主机作用系统版本Nginx版本
192.168.9.104NginxUbuntu16.04nginx version: nginx/1.10.3 (Ubuntu)
注意:9.104上不需要安装 MySQL 2.Nginx 配置 /etc/nginx/nginx.conf
在最后一行添加如下代码即可:

stream {
    upstream mysql_proxy{
       hash $remote_addr consistent;
       server 192.168.9.106:3306 weight=1 max_fails=3 fail_timeout=10s;
       server 192.168.9.107:3306 weight=1 max_fails=3 fail_timeout=10s;
    }
    server {
       listen 3306; # 数据库服务器监听端口
       proxy_connect_timeout 10s;
       proxy_timeout 300s; 
       proxy_pass mysql_proxy;
    }
}
3. 截止目前,Nginx + MySQL 主主 的高可用集群搭建完毕。

附录: 192.168.9.106 my.cnf 配置如图:
[mysqld]
log-bin=mysql-bin
server-id=663

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
192.168.9.107 my.cnf 配置如图:
[mysqld]
log-bin=mysql-bin
server-id=662

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
192.168.9.104 Nginx - nginx.cnf 配置如图:
user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
	worker_connections 768;
	# multi_accept on;
}

http {

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	# server_tokens off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;


	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	gzip on;
	gzip_disable "msie6";


	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}

stream {
    upstream mysql_proxy{
       hash $remote_addr consistent;
       server 192.168.9.106:3306 weight=1 max_fails=3 fail_timeout=10s;
       server 192.168.9.107:3306 weight=1 max_fails=3 fail_timeout=10s;
    }
    server {
       listen 3306; # 数据库服务器监听端口
       proxy_connect_timeout 10s;
       proxy_timeout 300s; 
       proxy_pass mysql_proxy;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/276952.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号