美文网首页
mysql主主,生产

mysql主主,生产

作者: 小小的小帅 | 来源:发表于2020-10-30 18:24 被阅读0次
  • Linux中关闭SELinux的方法
    1、临时关闭:输入命令setenforce 0,重启系统后还会开启。
    2、永久关闭:输入命令vi /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,然后保存退出

1.安装配置

添加用户:adduser mysql
设定密码:passwd mysql
创建目录:(注意目录、用户)
cd /usr/local/
mkdir mysql
添加权限:
chown -R mysql /usr/local/mysql
解压
tar -xvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.28-linux-glibc2.12-x86_64 /usr/local/mysql/mysql-5.7
cd /usr/local/mysql
mkdir data
配置my.cnf: (root权限)
vim /etc/my.cnf

  • 主节点配置
[client]
socket=/usr/local/mysql/mysql.sock
[mysqld]
# 每个节点的server-id一定要设置不同  节点1-75,节点2-163
server-id = 78
port = 3306
user = mysql
bind_address = 0.0.0.0
skip_name_resolve = 1
basedir=/usr/local/mysql/mysql-5.7
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
log-error=/usr/local/mysql/mysql.err
pid-file=/usr/local/mysql/mysql.pid
explicit_defaults_for_timestamp=true
character-set-server=utf8
lower_case_table_names=1
max_connections=1000
max_connect_errors=10000
#根据服务器内存调整
innodb_buffer_pool_size=16G
back_log=900
open_files_limit=102400
thread_cache_size=128
table_open_cache=1024
innodb_buffer_pool_instances=4
innodb_flush_method=O_DIRECT
innodb_log_file_size=1073741824
#######replication settings########
master_info_repository = TABLE
relay_log_info_repository = TABLE
# MySQL复制是基于binlog日志的
log_bin = master-bin
sync_binlog = 1
log_slave_updates
binlog_format = row
relay_log = relay.log
relay_log_recovery = 1
slave_skip_errors = ddl_exist_errors
######semi sync replication settings########
# 设置插件目录路径
plugin_dir=/usr/local/mysql/mysql-5.7/lib/plugin
# 加载插件
plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
# 开启master semi sync replication
rpl_semi_sync_master_enabled = 1
# 开启slave semi sync replication
rpl_semi_sync_slave_enabled = 1
# 等待5秒无ack应答自动切换为异步模式
rpl_semi_sync_master_timeout = 5000
# 开启lossless replication
rpl_semi_sync_master_wait_point= AFTER_SYNC
# 至少有1个slave接收到日志
rpl_semi_sync_master_wait_for_slave_count = 1

innodb_buffer_pool_size根据情况设置,server-id切记一点要修改

[root@localhost mysql]# find / -name "semisync_master.so"
find: ‘/run/user/1000/gvfs’: Permission denied
/usr/local/mysql/mysql-5.7/lib/plugin/debug/semisync_master.so
/usr/local/mysql/mysql-5.7/lib/plugin/semisync_master.so
[root@localhost mysql]# find / -name "semisync_slave.so"
find: ‘/run/user/1000/gvfs’: Permission denied
/usr/local/mysql/mysql-5.7/lib/plugin/debug/semisync_slave.so
/usr/local/mysql/mysql-5.7/lib/plugin/semisync_slave.so

初始化mysql (注意目录、用户)

cd /usr/local/mysql/mysql-5.7/bin
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/mysql-5.7/ --datadir=/usr/local/mysql/data/ --user=mysql --initialize

提示报错的话
yum install libaio-devel.x86_64
yum -y install numactl

启动

cp /usr/local/mysql/mysql-5.7/support-files/mysql.server /etc/init.d/mysql
启动,mysql启动需要使用root权限,否则配置文件my.cnf会读取不到
service mysql start

登录

cat /usr/local/mysql/mysql.err
cd /usr/local/mysql/mysql-5.7/bin
./mysql -u root -p 
#修改密码
SET PASSWORD = PASSWORD('handhand123');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;  
修改远程可访问
use mysql;                                            #访问mysql库
update user set host = '%' where user = 'root';      #使root能再任何host访问
FLUSH PRIVILEGES;   

创建hips账号和数据库

create user 'hips'@'%' identified by 'handhand123';
GRANT all on hips.* TO 'hips'@'%' ;

配置主主同步

创建同步账号
create user 'slave'@'%' identified by 'HandSlave#2020';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' ;
记录两边binlog位置,执行
show master status;

+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000003 |     1901 |              |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
在192.168.100.181上执行
change master to master_host='192.168.100.182', master_port=3306, master_user='slave', master_password='HandSlave#2020', master_log_file='master-bin.000003', master_log_pos=1901;
在192.168.100.182上执行
change master to master_host='192.168.100.181', master_port=3306, master_user='slave', master_password='HandSlave#2020', master_log_file='master-bin.000004', master_log_pos=154;
两台Mysql开户同步
start slave;
两个mysql查看同步状态
show slave status;
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

keepalived 高可用

  1. yum安装:
    yum install keepalived -y
    vim /etc/keepalived/keepalived.conf
    182
global_defs {
   router_id hips01
   script_user root
}

vrrp_script chkmysqld {
   script "/etc/keepalived/checkmysqld.sh"
   interval 5
   fall 3
   rise 1
}

vrrp_instance VI_1 {
#MASTER或者BACKUP,如果MASTER初始的权重没有BACKUP高,会被主动切换到BACKUP;
    state MASTER
#优先级高的设置nopreempt解决异常恢复后再次抢占的问题。
    nopreempt
#采用的接口网卡,注意后续所有的虚拟IP都需要在网卡支持的网段范围内,
                #比如centos默认是ens33,树莓派是eth0,用ifconfig查看网卡网段,如果网卡只有192.168的内网网段那么虚拟IP也必须要用这个网段
    interface eno16777736
#设置VRID标记,不同服务集群内不能重复
    virtual_router_id 71
#权重,越高越容易被选为主 
    priority 101
    authentication {
        auth_type PASS
        auth_pass 2222
    }
    track_script {
        chkmysqld
    }
    virtual_ipaddress {
        192.168.100.183/16
    }
}

182

global_defs {
   router_id hips02
   script_user root
}

vrrp_script chkmysqld {
   script "/etc/keepalived/checkmysqld.sh"
   interval 5
   fall 3
   rise 1
}

vrrp_instance VI_1 {
    state BACKUP
    interface eno16777736
    virtual_router_id 71
    priority 100
    mcast_src_ip  192.168.100.182
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 2222
    }
    track_script {
        chkmysqld
    }
    virtual_ipaddress {
        192.168.100.83
    }
}

181

global_defs {
   router_id hips01
   script_user root
}

vrrp_script chkmysqld {
   script "/etc/keepalived/checkmysqld.sh"
   interval 5
   fall 3
   rise 1
}

vrrp_instance VI_1 {
    state MASTER
    interface eno16777736
    virtual_router_id 71
    priority 101
    mcast_src_ip  192.168.100.181
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 2222
    }
    track_script {
        chkmysqld
    }
    virtual_ipaddress {
        192.168.100.83
    }
}

  1. mysql检查脚本
    vim /etc/keepalived/checkmysqld.sh
#!/bin/bash
mysqlhost=localhost
user=slave
password='HandSlave#2020'
RESULT=$(/usr/local/mysql/mysql-5.7/bin/mysql -h $mysqlhost -u $user -p$password -N -s -e "select 1")
echo $RESULT

if [ "${RESULT}" == "1" ]; then
  exit 0
else
service mysql start
  exit 1
fi
  1. 启动keepalived
chmod a+x /etc/keepalived/checkmysqld.sh
systemctl enable keepalived
systemctl start keepalived
查看VIP
ip a
测试使用VIP连接数据库
mysql -h192.168.100.83 -uroot -p

keepalived主、从:


image.png

keepalived的日志文件路径:
tail -f /var/log/messages

Nov  1 03:26:54 ip-192-168-100-181 Keepalived_vrrp[14150]: Sending gratuitous ARP on ens5 for 192.168.100.83

相关文章

  • mysql主主,生产

    Linux中关闭SELinux的方法1、临时关闭:输入命令setenforce 0,重启系统后还会开启。2、永久关...

  • MySQL主从复制 - 实战

    本文解决生产环境仅有主MySQL时增加从MySQL的问题 目录 运行主MySQL 配置主MySQL 导出主MySQ...

  • mysql 主主复制

    1.环境准备: 主机IP:192.168.1.4, 192.168.1.5 操作系统:centos 7.3 ...

  • MySQL 主主复制

    环境 服务器 两台 centos6.5 (ip:192.168.1.121、192.168.1.212) 软件 ...

  • Mysql 主主备份

    首先请大家先打开我上一篇文章 主从备份 完成Mysql的基本环境(安装Mysql 即可) 注意点:如果是连着我前面...

  • 配置:mysql [主-从]&[主-主]

    主数据库配置 主数据库配置备份用户 在 主数据库 上配置 备份用户 主数据库配置my.cnf 然后重启 mysql...

  • MySQL主从复制 - 原理

    目录 环境主MySQL从MySQL测试数据 原理主MySQL记录SQL到binary-log从MySQL连接到主M...

  • MySQL主从复制 - 入门

    目录 主MySQL安装MySQL配置MySQL账号和状态 从MySQL安装MySQL配置MySQL主从复制 测试主...

  • Mysql主从配置(一台机器)

    (1)源码安装mysql主 (2)配置mysql主 (3)源码安装mysql从 (4)配置mysql从 (5)测试...

  • 2019-10-12

    利用LVS+Keepalived搭建Mysql双主复制高可用负载均衡环境 应用背景: MySQL复制(主主,主从....

网友评论

      本文标题:mysql主主,生产

      本文链接:https://www.haomeiwen.com/subject/pwldvktx.html