keepalived+nginx双主模式+mycat+mysql主从同步

1、 安装步骤
keepalived安装:
在这里插入图片描述
nginx安装:
官网下载地址:https://nginx.org/download.html
./configure
make && make install
mycat安装:
下载地址 http://dl.mycat.org.cn/1.6.7.5/2020-4-10/
解压文件到/usr/local文件夹下
tar -zxvf Mycat-server-1.6.7.5-release-20200422133810-linux.tar.gz -C /usr/local
配置环境变量
vi /etc/profile
添加如下配置信息:
export MYCAT_HOME=/usr/local/mycat
export PATH= M Y C A T H O M E / b i n : MYCAT_HOME/bin: MYCATHOME/bin:PATH:$JAVA_HOME/bin
mysql安转:
下载wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
安装源rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
删除源rm -rf mysql57-community-release-el7-11.noarch.rpm
查看源yum repolist enabled | grep mysql
安装yum -y install mysql-community-server
配置vim /etc/my.cnf
找到[mysqld]
增加character_set_server=utf8
启动systemctl start mysqld.service
状态systemctl status mysqld.service
查看初始密码grep ‘temporary password’ /var/log/mysqld.log
登录mysql -uroot -p
修改密码ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘Aomei@1118’;
查看编码show variables like ‘%character%’;
退出exit
开机自启systemctl enable mysqld.service

2、软件配置

- keepalived双主配置:

[root@master-node ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
ops@wangshibo.cn
tech@wangshibo.cn
}
notification_email_from ops@wangshibo.cn
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id master-node
}
vrrp_script chk_http_port {
script “/opt/chk_nginx.sh”
interval 2
weight -5
fall 2
rise 1
}
vrrp_instance VI_1 {
state MASTER
interface en1
mcast_src_ip 103.110.98.14
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
103.110.98.20
}
notify_master “/etc/keepalived/clean_arp.sh 103.110.98.20”
}
vrrp_instance VI_2 {
state BACKUP
interface en1
mcast_src_ip 103.110.98.24
virtual_router_id 52
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
103.110.98.21
}
notify_master “/etc/keepalived/clean_arp.sh 103.10.86.21”
}

- nginx配置:

[root@storage conf]# cat nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid /var/run/nginx.pid;
worker_rlimit_nofile 165535;
events {
use epoll;
worker_connections 65535;
}
http {
include mime.types;
default_type application/octet-stream;
upstream tomcat_pool{
#server tomcat地址:端口号 weight表示权值,权值越大,被分配的几率越大;
server 192.168.3.233:30021 weight=2;
server 192.168.3.235:30022 weight=1;
}
sendfile on;
keepalive_timeout 600;
server {
listen 80;
server_name 192.168.3.236;
client_max_body_size 35m;
large_client_header_buffers 4 16k; # 读取大型客户端请求头的缓冲区的最大数量和大小
client_body_buffer_size 128k; #请求主体的缓冲区大小。
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
location / {
uwsgi_send_timeout 600; # 指定向uWSGI传送请求的超时时间,完成握手后向uWSGI传送请求的超时时间。
uwsgi_connect_timeout 600; # 指定连接到后端uWSGI的超时时间。
uwsgi_read_timeout 600; # 指定接收uWSGI应答的超时时间,完成握手后接收uWSGI应答的超时时间。
root html;
index index.html;
}
location ^~ /rest/ {
proxy_pass http://tomcat_pool;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
}
}
}

- mycat配置:

进入到/usr/local/mycat/conf目录下,修改该文件夹下的配置文件
1、修改server.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<property name="defaultSchema">TESTDB</property>
</user>
</mycat:server>

2、修改schema.xml文件

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>
<dataNode name="dn1" dataHost="host1" database="msb" />
<dataHost name="host1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="192.168.85.111:3306" user="root" password="123456">
	<readHost host="hostS1" url="192.168.85.112:3306" user="root" password="123456"></readHost>
</writeHost>
</dataHost>

</mycat:schema>

- mysql主从配置:

主节点配置:/etc/my.cnf
#服务器标志号,注意在配置文件中不能出现多个这样的标识,如果出现多个的话mysql以第一个为准,一组主从中此标识号不能重复。
server-id = 1
log-bin=/home/mysql/logs/binlog/bin-log #开启bin-log,并指定文件目录和文件名前缀。
#每个bin-log最大大小,当此大小等于500M时会自动生成一个新的日志文件。一条记录不会写在2个日志文件中,所以有时日志文件会超过此大小。
max_binlog_size = 500M
binlog_cache_size = 128K #日志缓存大小
binlog-do-db = adb #需要同步的数据库名字,如果是多个,就以此格式在写一行即可。
binlog-ignore-db = mysql #不需要同步的数据库名字,如果是多个,就以此格式在写一行即可。
#当Slave从Master数据库读取日志时更新新写入日志中,如果只启动log-bin 而没有启动log-slave-updates则Slave只记录针对自己数据库操作的更新。
log-slave-updates
expire_logs_day=2 #设置bin-log日志文件保存的天数,此参数mysql5.0以下版本不支持。
binlog_format=“MIXED” #设置bin-log日志文件格式为:MIXED,可以防止主键重复。
其他配置:
#不同步哪些数据库
binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = information_schema
#只同步哪些数据库,除此之外,其他不同步
binlog-do-db = game
#日志保留时间
expire_logs_days = 10
#控制binlog的写入频率。每执行多少次事务写入一次
#这个参数性能消耗很大,但可减小MySQL崩溃造成的损失
sync_binlog = 5
#日志格式,建议mixed
#statement 保存SQL语句
#row 保存影响记录数据
#mixed 前面两种的结合
binlog_format = mixed
从节点配置:
#服务器标志号,注意在配置文件中不能出现多个这样的标识,如果出现多个的话mysql以第一个为准,一组主从中此标识号不能重复。
server-id = 2
log-bin=/home/mysql/logs/binlog/bin-log #开启bin-log,并指定文件目录和文件名前缀。
#每个bin-log最大大小,当此大小等于500M时会自动生成一个新的日志文件。一条记录不会写在2个日志文件中,所以有时日志文件会超过此大小。
max_binlog_size = 500M
binlog_cache_size = 128K #日志缓存大小
binlog-do-db = adb #需要同步的数据库名字,如果是多个,就以此格式在写一行即可。
binlog-ignore-db = mysql #不需要同步的数据库名字,如果是多个,就以此格式在写一行即可。
#当Slave从Master数据库读取日志时更新新写入日志中,如果只启动log-bin 而没有启动log-slave-updates则Slave只记录针对自己数据库操作的更新。
log-slave-updates
expire_logs_day=2 #设置bin-log日志文件保存的天数,此参数mysql5.0以下版本不支持。
binlog_format=“MIXED” #设置bin-log日志文件格式为:MIXED,可以防止主键重复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值