MySQL高可用安装

打印 上一主题 下一主题

主题 825|帖子 825|积分 2475

目录

MySQL HA部署

环境准备

地址说明10.5.12.92pro-mysql-ha01,主节点 110.5.12.93pro-mysql-ha02,主节点 210.5.12.91pro-mysql-vip,虚拟 Virtual IP创建本地yum源

上传 CentOS-7-x86_64-DVD-1708.iso 到/opt/software
  1. cd /etc/yum.repos.d/
  2. mkdir bkp
  3. mv *.repo bkp
  4. sudo touch /etc/yum.repos.d/local.repo
复制代码
编辑文件 local.repo 的内容
  1. [CentOS74]  
  2. name=CentOS7.4  
  3. baseurl=file:///media  
  4. enabled=1gpgcheck=0
  5. gpgkey=file:///media/RPM-GPG-KEY-CentOS-7
复制代码
挂载并清空yum缓存
  1. mount /opt/software/CentOS-7-x86_64-DVD-1708.iso /media -o loop
  2. yum clean all
  3. yum makecache
复制代码
确认关闭 SELinux

1、临时关闭:输入命令setenforce 0,重启系统后还会开启。
2、永久关闭:输入命令vi /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,然后保存退出。
防火墙设置

使用 root 用户在 pro-mysql-ha01 和 pro-mysql-ha02 上需要将相应的端口(例如 MySQL 使用的 23306 端口)加入到防火墙的过滤规则里面
  1. firewall-cmd --zone=public --add-port=23306/tcp –permanent  
  2. firewall-cmd –reload
  3. firewall-cmd –list-all
复制代码

MySQL安装

使用 root 用户操作创建相关的用户组和用户
  1. groupadd mysql
  2. useradd -r -g mysql mysql
  3. passwd mysql
复制代码
上传/解压介质

将 mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz 上传到/opt/software 目录,并解压介质到 目录/opt/mysql
  1. tar zxvf mysql-8.0.22-linux-glibc2.12-x86_64.tar.gz -C /opt
  2. ln -s /opt/mysql-8.0.22-linux-glibc2.12-x86_64 /opt/mysql
  3. yum remove mariadb-libs-5.5.56-2.el7.x86_64 #mariadb 相关内容卸载
  4. mkdir /mysql-data #用来存放 mysql 的数据,后面的配置文件需要用到
复制代码
编辑/etc/my.cnf 文件,如下
  1. [mysqld]
  2. basedir = /opt/mysql
  3. datadir = /mysql-data
  4. socket = /mysql-data/mysql.sock
  5. skip-name-resolve
  6. log-error = /mysql-data/error.log
  7. pid-file = /mysql-data/mysql.pid
  8. character-set-server=utf8mb4
  9. port=23306
  10. lower_case_table_names = 1
  11. default-storage-engine=INNODB
  12. [client]
  13. socket = /mysql-data/mysql.sock
  14. default-character-set=utf8mb4
  15. port=23306
复制代码
设置自启动
  1. cp /opt/mysql/support-files/mysql.server /etc/init.d/mysqld
复制代码
修改/etc/init.d/mysqld 的 basedir 和 datadir 为上面指定的实际值
......
basedir=/opt/mysql
datadir=/mysql-data
......
  1. vi /usr/lib/systemd/system/mysqld.service
复制代码
  1. [Unit]
  2. Description=MySQL
  3. After=syslog.target network.target remote-fs.target nss-lookup.target
  4. Before=shutdown.target
  5. [Service]
  6. User=mysql
  7. Group=mysql
  8. Type=forking
  9. PIDFile=/mysql-data/mysql.pid
  10. #Disable service start and stop timeout logic of systemd for mysqld service.
  11. TimeoutSec=0
  12. #Execute pre and post scripts as root
  13. PermissionsStartOnly=true# Start|Stop main service
  14. ExecStart=/etc/init.d/mysqld start
  15. ExecStop=/etc/init.d/mysqld stop
  16. #Sets open_files_limit
  17. LimitNOFILE = 5000
  18. Restart=on-failure
  19. RestartPreventExitStatus=1
  20. PrivateTmp=false
  21. [Install]
  22. WantedBy=multi-user.target
  23. Alias=mysqld.service
复制代码
使用 root 用户执行以下的命令修改 basedir 和 datadir 的属主
  1. chown mysql:mysql /etc/init.d/mysqld
  2. chown -Rf mysql:mysql /opt/mysql /opt/mysql-8.0.22-linux-glibc2.12-x86_64
  3. chown -Rf mysql:mysql /mysql-data
  4. systemctl daemon-reload
  5. chkconfig --level 345 mysqld on
  6. chkconfig --add mysqld
复制代码
Mysql初始化
  1. cd /opt/mysql/bin
  2. ./mysqld --initialize --user=mysql --basedir=/opt/mysql --datadir=/mysql-data
  3. cat /mysql-data/error.log #获取 root 的临时密码
复制代码

启动mysql
  1. /opt/mysql/bin/mysqld_safe --user=mysql &
复制代码

进入mysql修改root密码
  1. /opt/mysql/bin/mysql -uroot -p
  2. alter user root@'localhost' identified with mysql_native_password by '指定的密码';  #修改root密码
  3. /opt/mysql/bin/mysqladmin -uroot -p -S /mysql-data/mysql.sock shutdown #停止MySQL
复制代码

到此,pro-mysql-ha0l 和pro-mysql-ha02上的MySQL安装并设置完毕
主主同步环境配置

1.1.3.1        基础配置
编辑 pro-mysql-ha01 服务器上的文件/etc/my.cnf 的,在 mysqld 部分添加下面的配置
  1. server-id = 1
  2. log_bin = mysql-bin
  3. expire_logs_days=10
  4. sync_binlog = 1
  5. binlog_checksum = none
  6. binlog_format = mixed
  7. auto-increment-increment = 2
  8. auto-increment-offset = 1
  9. slave-skip-errors = all
复制代码
使用 root 用户执行 systemctl restart mysqld 重启 mysql 服务
  1. systemctl restart mysqld
复制代码
登录 mysql 执行一下操作
  1. create user syncoper@'%' identified with mysql_native_password by '指定的密码';
  2. grant replication slave, replication client on *.* to syncoper@'%';
  3. flush privileges;
  4. flush tables with read lock;
  5. show master status;
复制代码
编辑 pro-mysql-ha02 服务器上的文件/etc/my.cnf 的,在 mysqld 部分添加下面的配置
  1. server-id = 2
  2. log_bin = mysql-bin
  3. expire_logs_days=10
  4. sync_binlog = 1
  5. binlog_checksum = none
  6. binlog_format = mixed
  7. auto-increment-increment = 2
  8. auto-increment-offset = 2
  9. slave-skip-errors = all
复制代码
使用 root 用户执行 systemctl restart mysqld 重启 mysql 服务
  1. systemctl restart mysqld
复制代码
登录 mysql 执行一下操作
  1. create user syncoper@'%' identified with mysql_native_password by '指定的密码';
  2. grant replication slave, replication client on *.* to syncoper@'%';
  3. flush privileges;
  4. flush tables with read lock;
  5. show master status;
复制代码
pro-mysql-ha01同步操作测试

登录 mysql 命令行,执行下面的操作
  1. unlock tables;
  2. stop slave;
  3. change maste master_host='10.5.15.18', master_user='syncoper',master_password= 'syncoper 的用户密码',master_log_file='mysql-bin.000001',master_log_pos=871;
  4. start slave;
  5. show slave status\G;
复制代码

其中master_host 为 dev-mysql-ha02 的地址
master_user 为连接的用户
master_password 为连接密码
master_log_file 为上一步在 dev-mysql-ha02 执行得到 binlog 文件名
master_log_pos 为上一步在 dev-mysql-ha02 执行得到 binlog
pro-mysql-ha02同步操作测试
  1. unlock tables;
  2. stop slave;
  3. change master to master_host='10.5.15.17', master_port=23306,
  4. master_user='syncoper', master_password='syncoper
  5. 的 用 户 密 码 ',
  6. master_log_file='mysql-bin.000002', master_log_pos=1435;
  7. start slave;
  8. show slave status\G;
复制代码

MySQL +Keepalived配置

Keepalived安装
  1. yum install keepalived  
复制代码
使用 root 用户配置两台服务器上的 keepalived, pro-mysql-ha01 上的配置内容
  1. vi /etc/keepalived/keepalived.conf
复制代码
  1. ! Configuration File for keepalived
  2. global_defs {
  3. notification_email {
  4. cgo-ops@qq.com
  5. cgo-tech@qq.com
  6. }
  7. notification_email_from cgo-ops@qq.com
  8. smtp_server 127.0.0.1
  9. smtp_connect_timeout 30
  10. router_id MySQL_HA
  11. }
  12. vrrp_instance VI_1 {
  13. state BACKUP
  14. interface ens160
  15. virtual_router_id 51 priority 100
  16. advert_int 1
  17. nopreempt
  18. authentication {
  19. auth_type PASS
  20. auth_pass 12345678
  21. }
  22. virtual_ipaddress {
  23. 10.5.15.16
  24. }
  25. }
  26. virtual_server virtual_server 10.5.15.16 23306 {
  27. delay_loop 2
  28. persistence_timeout 50
  29. protocal TCP
  30. real_server 10.5.15.17 23306 {
  31. weight 3
  32. notify_down /opt/mysql/monitor/switch_keepalived.sh
  33. TCP_CHECK {
  34. connect_timeout 3
  35. nb_get_retry 3
  36. delay_before_retry 3
  37. }
  38. }
  39. }
复制代码
pro-mysql-ha02 上的配置内容
  1. ! Configuration File for keepalived
  2. global_defs {
  3. notification_email {
  4. cgo-ops@qq.com
  5. cgo-tech@qq.com
  6. }
  7. notification_email_from cgo-ops@qq.com
  8. smtp_server 127.0.0.1
  9. smtp_connect_timeout 30
  10. router_id MySQL_HA
  11. }
  12. vrrp_instance VI_1 {
  13. state BACKUP
  14. interface ens160
  15. virtual_router_id 51
  16. priority 90
  17. advert_int 1
  18. # nopreempt
  19. authentication {
  20. auth_type PASS
  21. auth_pass 12345678
  22. }
  23. virtual_ipaddress {
  24. 10.5.15.16
  25. }}
  26. virtual_server virtual_server 10.5.15.16 23306 {
  27. delay_loop 2
  28. persistence_timeout 50
  29. protocal TCP
  30. real_server 10.5.15.18 23306 {
  31. weight 3
  32. notify_down /opt/mysql/monitor/switch_keepalived.sh
  33. TCP_CHECK {
  34. connect_timeout 3
  35. nb_get_retry 3
  36. delay_before_retry 3
  37. }
  38. }
  39. }
复制代码
修改防火墙,注意命令中要修改自己的网卡名称ens33
  1. firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens33 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
  2. firewall-cmd --reload
复制代码
执行一下的命令设置 keepalived 为随服务器自启动
重新加载
  1. systemctl daemon-reload
复制代码
设置开机自动启动
  1. systemctl enable keepalived.service
复制代码
查看两台vip配置情况, 若两台主机只有一个VIP,则配置正常
  1. ip addr
复制代码
至此,MySQL HA 配置完成

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大号在练葵花宝典

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表