mysql 代理 a_mysql主主、mysql-proxy读写分离、keepalived高可用完美组合

配置mysql主主复制

服务器A:172.16.100.9

服务器B:172.16.100.10

首先在服务器A和服务器B上各安装好单机版mysql5.7,安装好后,再继续下面的操作。

在服务器A和服务器B上都执行

wget ftp://ftp.pbone.net/mirror/ftp.centos.org/7.6.1810/cloud/x86_64/openstack-ocata/common/crudini-0.9-2.el7.noarch.rpm

wget ftp://ftp.pbone.net/mirror/ftp.centos.org/7.6.1810/cloud/x86_64/openstack-stein/openstack-utils-2017.1-1.el7.noarch.rpm

rpm -ivh crudini-0.9-2.el7.noarch.rpm

rpm -ivh openstack-utils-2017.1-1.el7.noarch.rpm

mkdir -p /usr/local/mysqldata/binlogs

mkdir -p /usr/local/mysqldata/relaylogs

chown -R mysql:mysql  /usr/local/mysqldata

chmod -R 770  /usr/local/mysqldata

1.控制自增列的初始值为2和增量步长为1

openstack-config --set /etc/my.cnf mysqld auto_increment_offset 1

openstack-config --set /etc/my.cnf mysqld auto_increment_increment 2

2.启用binlog日志,只保留7天内的日志

openstack-config --set /etc/my.cnf mysqld log-bin /usr/local/mysqldata/binlogs/mysql-bin

openstack-config --set /etc/my.cnf mysqld max_binlog_size  1G

openstack-config --set /etc/my.cnf mysqld binlog_format ROW

openstack-config --set /etc/my.cnf mysqld expire_logs_days 7

3.配置中继日志的位置

openstack-config --set /etc/my.cnf mysqld relay-log /usr/local/mysqldata/relaylogs/slave-relay-bin

4.开启从库上的更新操作要写入binlog日志,以便从库的从库能够进行日志同步

openstack-config --set /etc/my.cnf mysqld log-slave-updates

5.设置每缓存20个事务就采用同步写磁盘的方式写入binlog日志

openstack-config --set /etc/my.cnf mysqld innodb_support_xa 1

openstack-config --set /etc/my.cnf mysqld sync_binlog 20

6.不记录系统数据库的二进制日志

sed -i "/^\[mysqld/a\binlog_ignore_db = mysql" /etc/my.cnf

sed -i "/^\[mysqld/a\binlog_ignore_db = information_schema" /etc/my.cnf

sed -i "/^\[mysqld/a\binlog_ignore_db = information_schema" /etc/my.cnf

sed -i "/^\[mysqld/a\binlog_ignore_db = sys" /etc/my.cnf

7.设置服务器的server-id

openstack-config --set /etc/my.cnf mysqld server-id $RANDOM

8.重启数据库

ps -ef | grep mysql | grep -v grep | awk '{print $2}' |xargs kill -9

/usr/local/mysqlrun/bin/mysqld_safe --defaults-file=/etc/my.cnf &

9.创建同步账号

grant replication slave on *.* to 'repl'@'172.16.100.9' identified by 'repl1234!';

grant replication slave on *.* to 'repl'@'172.16.100.10' identified by 'repl1234!';

flush privileges;

10.查看并记录master状态中的File和Position

reset master;

show master status;

得到的结果为:

mysql-bin.000001 和 154

在服务器A上执行

stop slave;

reset slave all;

change master to master_host='172.16.100.10',master_user='repl',master_password='repl1234!',master_log_file='mysql-bin.000001',master_log_pos=154;

start slave;

show slave status\G;

在服务器B上执行

stop slave;

reset slave all;

change master to master_host='172.16.100.9',master_user='repl',master_password='repl1234!',master_log_file='mysql-bin.000001',master_log_pos=154;

start slave;

show slave status\G;

配置keepalived高可用(不抢占)

服务器A:172.16.100.9

服务器B:172.16.100.10

VIP:172.16.100.12

VIP:172.16.100.13

首先在服务器A和服务器B上各安装好keepalived,安装好后,再继续下面的操作。

在服务器A上执行

1.编写脚本监控mysql状态

echo '#!/bin/bash

count = `ps aux | grep -v grep | grep mysql | wc -l`

if [ $count > 0 ];then

exit 0

else

exit 1

fi' > /etc/keepalived/checkmysql.sh

2.配置全局定义块

global_defs {

router_id mysqlserver01

}

3.keepalived只能做到对网络故障和keepalived本身的监控,配置脚本监控mysql服务状态

weight对priority的影响详情请参考https://www.cnblogs.com/arjenlee/p/9258188.html

vrrp_script checkmysql

{

script "/etc/keepalived/checkmysql.sh"

interval 3

weight -20

}

4.配置VRRP实例定义块

vrrp_instance instance1 {

state MASTER

virtual_router_id 1

interface eth0

mcast_src_ip 172.16.100.9

priority 100

advert_int 3

nopreempt

authentication {

auth_type PASS

auth_pass kee1234

}

virtual_ipaddress {

172.16.100.12

}

track_script {

checkmysql

}

}

vrrp_instance instance2 {

state BACKUP

virtual_router_id 2

interface eth0

mcast_src_ip 172.16.100.9

priority 90

advert_int 3

nopreempt

authentication {

auth_type PASS

auth_pass kee1234

}

virtual_ipaddress {

172.16.100.13

}

track_script {

checkmysql

}

}

在服务器B上执行

1.编写脚本监控mysql状态

echo '#!/bin/bash

count = `ps aux | grep -v grep | grep mysql | wc -l`

if [ $count > 0 ];then

exit 0

else

exit 1

fi' > /etc/keepalived/checkmysql.sh

2.配置全局定义块

global_defs {

router_id mysqlserver02

}

3.keepalived只能做到对网络故障和keepalived本身的监控,配置脚本监控mysql服务状态

weight对priority的影响详情请参考https://www.cnblogs.com/arjenlee/p/9258188.html

vrrp_script checkmysql

{

script "/etc/keepalived/checkmysql.sh"

interval 3

weight -20

}

4.配置VRRP实例定义块

vrrp_instance instance1 {

state BACKUP

virtual_router_id 1

interface eth0

mcast_src_ip 172.16.100.10

priority 90

advert_int 3

nopreempt

authentication {

auth_type PASS

auth_pass kee1234

}

virtual_ipaddress {

172.16.100.12

}

track_script {

checkmysql

}

}

vrrp_instance instance2 {

state MASTER

virtual_router_id 2

interface eth0

mcast_src_ip 172.16.100.10

priority 100

advert_int 3

nopreempt

authentication {

auth_type PASS

auth_pass kee1234

}

virtual_ipaddress {

172.16.100.13

}

track_script {

checkmysql

}

}

mysql-proxy实现读写分离

服务器:172.16.100.7

首先在服务器上安装好mysql-proxy,安装好后,再继续下面的操作。

1.修改配置文件

cat << EOF > /etc/mysql-proxy.cnf

[mysql-proxy]

user = root

admin-username=root

admin-password=123456

proxy-address=172.16.100.7

proxy-lua-script = /usr/local/myapps/mysql-proxy/lua/rw-splitting.lua

admin-lua-script = /usr/local/myapps/mysql-proxy/lua/admin-sql.lua

proxy-backend-addresses = 172.16.100.12

proxy-read-only-backend-addresses = 172.16.100.13

log-file=/usr/local/myapps/mysql-proxy/logs/mysql-proxy.log

log-level=debug

EOF

2.重启mysql-proxy服务

ps -ef | grep mysql-proxy | grep -v grep | awk '{print $2}' |xargs kill -9

/usr/local/myapps/mysql-proxy/bin/mysql-proxy --daemon --keepalive  --defaults-file=/etc/mysql-proxy.cnf

声明:因为软件超过50M,所以分成了两部分,请搜索openstack安装包(二) 安装包二里面会有一键安装一键卸载的说明,敬请留意 openstack-rpm包信息: augeas-libs-1.0.0-5.el6_5.1.x86_64.rpm boost-program-options-1.41.0-18.el6.x86_64.rpm btrfs-progs-0.20-0.2.git91d9eec.el6.x86_64.rpm celt051-0.5.1.3-0.el6.x86_64.rpm crudini-0.3-2.el6.noarch.rpm cvs-1.11.23-16.el6.x86_64.rpm cyrus-sasl-2.1.23-13.el6_3.1.x86_64.rpm cyrus-sasl-lib-2.1.23-13.el6_3.1.x86_64.rpm cyrus-sasl-md5-2.1.23-13.el6_3.1.x86_64.rpm cyrus-sasl-plain-2.1.23-13.el6_3.1.x86_64.rpm Django14-1.4.8-1.el6.noarch.rpm dnsmasq-utils-2.48-13.el6.x86_64.rpm ebtables-2.0.9-6.el6.x86_64.rpm febootstrap-supermin-helper-3.21-4.el6.x86_64.rpm gettext-0.17-16.el6.x86_64.rpm glusterfs-api-3.4.0.57rhs-1.el6_5.x86_64.rpm glusterfs-libs-3.4.0.57rhs-1.el6_5.x86_64.rpm gnutls-2.8.5-13.el6_5.x86_64.rpm gnutls-utils-2.8.5-13.el6_5.x86_64.rpm gpxe-roms-qemu-0.9.7-6.10.el6.noarch.rpm hivex-1.3.3-4.2.el6.x86_64.rpm ipmitool-1.8.11-16.el6.x86_64.rpm iscsi-initiator-utils-6.2.0.873-10.el6.x86_64.rpm keyutils-1.4-4.el6.x86_64.rpm krb5-libs-1.10.3-15.el6_5.1.x86_64.rpm libcgroup-0.40.rc1-5.el6_5.1.x86_64.rpm libconfig-1.3.2-1.1.el6.x86_64.rpm libdrm-2.4.45-2.el6.x86_64.rpm libevent-1.4.13-4.el6.x86_64.rpm libgssglue-0.1-11.el6.x86_64.rpm libguestfs-1.20.11-2.el6.x86_64.rpm libguestfs-tools-c-1.20.11-2.el6.x86_64.rpm libjpeg-turbo-1.2.1-3.el6_5.x86_64.rpm libtirpc-0.2.1-6.el6_5.1.x86_64.rpm libvirt-0.10.2-29.el6_5.7.x86_64.rpm libvirt-client-0.10.2-29.el6_5.7.x86_64.rpm libvirt-python-0.10.2-29.el6_5.7.x86_64.rpm lzo-2.03-3.1.el6.x86_64.rpm lzop-1.02-0.9.rc1.el6.x86_64.rpm memcached-1.4.4-3.el6.x86_64.rpm mod_wsgi-3.2-3.el6.x86_64.rpm mysql-5.1.73-3.el6_5.x86_64.rpm mysql-libs-5.1.73-3.el6_5.x86_64.rpm MySQL-python-1.2.3-0.3.c1.1.el6.x86_64.rpm mysql-server-5.1.73-3.el6_5.x86_64.rpm nc-1.84-22.el6.x86_64.rpm netcf-libs-0.1.9-4.el6_5.2.x86_64.rpm netpbm-10.47.05-11.el6.x86_64.rpm netpbm-progs-10.47.05-11.el6.x86_64.rpm nfs-utils-1.2.3-39.el6.x86_64.rpm nfs-utils-lib-1.1.5-6.el6.x86_64.rpm novnc-0.4-8.el6.noarch.rpm ntp-4.2.6p5-1.el6.centos.x86_64.rpm ntpdate-4.2.6p5-1.el6.centos.x86_64.rpm numactl-2.0.7-8.el6.x86_64.rpm numad-0.5-9.20130814git.el6.x86_64.rpm openssl-1.0.1e-16.el6_5.7.x86_64.rpm openstack-dashboard-2013.2.3-1.el6.noarch.rpm openstack-glance-2013.2.3-2.el6.noarch.rpm openstack-keystone-2013.2.3-3.el6.noarch.rpm openstack-nova-2013.2.3-1.el6.noarch.rpm openstack-nova-api-2013.2.3-1.el6.noarch.rpm openstack-nova-cells-2013.2.3-1.el6.noarch.rpm openstack-nova-cert-2013.2.3-1.el6.noarch.rpm openstack-nova-common-2013.2.3-1.el6.noarch.rpm openstack-nova-compute-2013.2.3-1.el6.noarch.rpm openstack-nova-conductor-2013.2.3-1.el6.noarch.rpm openstack-nova-console-2013.2.3-1.el6.noarch.rpm openstack-nova-network-2013.2.3-1.el6.noarch.rpm openstack-nova-novncproxy-2013.2.3-1.el6.noarch.rpm openstack-nova-objectstore-2013.2.3-1.el6.noarch.rpm openstack-nova-scheduler-2013.2.3-1.el6.noarch.rpm openstack-utils-2013.2-2.el6.noarch.rpm p11-kit-0.18.5-2.el6_5.2.x86_64.rpm perl-DBD-MySQL-4.013-3.el6.x86_64.rpm perl-DBI-1.609-4.el6.x86_64.rpm perl-hivex-1.3.3-4.2.el6.x86_64.rpm polkit-0.96-5.el6_4.x86_64.rpm pyOpenSSL-0.13.1-1.el6.x86_64.rpm PyPAM-0.5.0-12.el6.x86_64.rpm pysendfile-2.0.0-3.el6.x86_64.rpm python-amqplib-1.0.2-1.el6.rf.noarch.rpm python-anyjson-0.3.1-2.el6.rf.noarch.rpm python-argparse-1.2.1-2.el6.noarch.rpm python-babel-0.9.4-5.1.el6.noarch.rpm python-backports-1.0-4.el6.x86_64.rpm python-backports-ssl_match_hostname-3.4.0.2-1.el6.noarch.rpm python-boto-2.27.0-1.el6.noarch.rpm python-ceilometerclient-1.0.8-1.el6.noarch.rpm python-chardet-2.0.1-1.el6.rf.noarch.rpm python-cheetah-2.4.1-1.el6.x86_64.rpm python-cinderclient-1.0.7-2.el6.noarch.rpm python-cliff-1.4.4-1.el6.noarch.rpm python-cmd2-0.6.4-7.el6.noarch.rpm python-crypto-2.0.1-22.el6.x86_64.rpm python-dateutil-1.4.1-6.el6.noarch.rpm python-django-appconf-0.5-3.el6.noarch.rpm python-django-compressor-1.3-2.el6.noarch.rpm python-django-horizon-2013.2.3-1.el6.noarch.rpm python-django-openstack-auth-1.1.2-1.el6.noarch.rpm python-dogpile-cache-0.5.0-1.el6.noarch.rpm python-dogpile-core-0.4.1-1.el6.noarch.rpm python-eventlet-0.9.17-2.el6.noarch.rpm python-glance-2013.2.3-2.el6.noarch.rpm python-glanceclient-0.12.0-1.el6.noarch.rpm python-greenlet-0.3.1-12.el6.x86_64.rpm python-heatclient-0.2.6-2.el6.noarch.rpm python-httplib2-0.7.7-1.el6.noarch.rpm python-iso8601-0.1.8-1.el6.noarch.rpm python-jinja2-26-2.6-2.el6.noarch.rpm python-jsonpatch-1.2-2.el6.noarch.rpm python-jsonpointer-1.0-3.el6.noarch.rpm python-jsonschema-2.3.0-1.el6.noarch.rpm python-keyring-0.7-1.el6.noarch.rpm python-keystone-2013.2.3-3.el6.noarch.rpm python-keystoneclient-0.7.1-2.el6.noarch.rpm python-kombu-1.4.1-1.el6.rf.noarch.rpm python-ldap-2.3.10-1.el6.x86_64.rpm python-libguestfs-1.20.11-2.el6.x86_64.rpm python-lockfile-0.8-3.el6.noarch.rpm python-lxml-2.2.3-1.1.el6.x86_64.rpm python-markdown-2.0.1-3.1.el6.noarch.rpm python-memcached-1.53-1.el6.noarch.rpm python-migrate-0.7.2-8.el6.noarch.rpm python-netaddr-0.7.5-4.el6.noarch.rpm python-neutronclient-2.3.4-1.el6.noarch.rpm python-nova-2013.2.3-1.el6.noarch.rpm python-novaclient-2.16.0-2.el6.noarch.rpm python-oauth2-1.5.211-5.el6.noarch.rpm python-ordereddict-1.1-2.el6.noarch.rpm python-oslo-config-1.2.1-1.el6.noarch.rpm python-paramiko-1.7.5-2.1.el6.noarch.rpm python-passlib-1.5.3-1.el6.noarch.rpm python-paste-1.7.4-2.el6.noarch.rpm python-paste-deploy1.5-1.5.0-5.el6.noarch.rpm python-pbr-0.5.21-2.el6.noarch.rpm python-pip-1.3.1-4.el6.noarch.rpm python-prettytable-0.7.2-1.el6.noarch.rpm python-pyasn1-0.0.12a-1.el6.noarch.rpm python-pygments-1.1.1-1.el6.noarch.rpm python-pyparsing-1.5.6-2.el6.rf.noarch.rpm python-qpid-0.18-5.el6_4.noarch.rpm python-requests-1.1.0-4.el6.noarch.rpm python-routes1.12-1.12.3-4.el6.noarch.rpm python-saslwrapper-0.18-1.el6_3.x86_64.rpm python-setuptools-0.6.10-3.el6.noarch.rpm python-simplejson-2.0.9-3.1.el6.x86_64.rpm python-six-1.5.2-1.el6.noarch.rpm python-sqlalchemy0.7-0.7.8-1.el6.x86_64.rpm python-stevedore-0.14-1.el6.noarch.rpm python-swiftclient-2.0.2-1.el6.noarch.rpm python-tempita-0.4-2.el6.noarch.rpm python-troveclient-0.1.4-3.el6.noarch.rpm python-urllib3-1.5-7.el6.noarch.rpm python-versiontools-1.9.1-3.el6.noarch.rpm python-warlock-1.0.1-1.el6.noarch.rpm python-webob-1.2.3-4.el6.noarch.rpm python-websockify-0.5.1-1.el6.noarch.rpm python-yaml-3.09-3.el6.rf.x86_64.rpm pytz-2010h-2.el6.noarch.rpm pyxattr-0.5.0-1.el6.x86_64.rpm qemu-img-0.12.1.2-2.415.el6_5.8.x86_64.rpm qemu-kvm-0.12.1.2-2.415.el6_5.8.x86_64.rpm qpid-cpp-client-0.18-18.el6.x86_64.rpm qpid-cpp-server-0.18-18.el6.x86_64.rpm radvd-1.6-1.el6.x86_64.rpm repodata rpcbind-0.2.0-11.el6.x86_64.rpm saslwrapper-0.18-1.el6_3.x86_64.rpm scrub-2.2-1.el6.x86_64.rpm seabios-0.6.1.2-28.el6.x86_64.rpm sgabios-bin-0-0.3.20110621svn.el6.noarch.rpm spice-server-0.12.4-6.el6_5.1.x86_64.rpm tunctl-1.5-3.el6.x86_64.rpm usbredir-0.5.1-1.el6.x86_64.rpm vgabios-0.6b-3.7.el6.noarch.rpm yajl-1.0.7-3.el6.x86_64.rpm zlib-1.2.3-29.el6.x86_64.rpm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值