美文网首页
mysql集群部署

mysql集群部署

作者: wangol | 来源:发表于2021-01-13 11:28 被阅读0次

    mysql集群部署

    一、软件准备

    MySQL版本采用 5.6.35,通过 Oracle 官方网站下载

    也可以直接从HTTP文件服务器上获取:

    生产环境:

    wget http://download.cloud.pub/mysql/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz

    二、安装MySQL

    1环境准备

    MySQL采用解压二进制安装包方式安装,两个节点采用一主一从的部署架构,MySQL

    禁止运行在操作系统的root账户下。

    操作系统环境:

    用户:mysql

    用户组:mysql

    数据库环境:

    Basedir : /usr/local/mysql

    Datadir: /data

    端口:3306

    root用户:不启用远程登录

    slave用户: 主从同步

    pacloud用户:业务用户,用户可以自行定义

    2安装主节点(Master)

    Step 1.创建用户及用户组

    以root用户登录,创建用户及用户组:

    创建MySQL运行账户:

    [root@aldb]# groupadd mysql

    [root@aldb]# useradd–r –g mysql mysql

    设置mysql用户密码

    [root@aldb]# passwd mysql

    创建MySQL DBA账户:

    [root@aldb]# groupadd dba

    [root@aldb]# useradd–r –g dba dba

    设置dba用户密码

    [root@aldb]# passwd dba

    Step 2.创建数据库文件存储目录

    [root@aldb]# mkdir /data

    注:如果采用外部存储,则/data应该为挂载点。

    设置权限

    [root@aldb]# chown–R mysql:mysql /data

    Step 3.解压 MySQL 安装包

    [root@aldb]# cd /software

    [root@aldb software]# tar–xzvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz

    [root@aldb software]# mv mysql-5.6.35-linux-glibc2.5-x86_64

    /usr/local/mysql

    设置权限

    [root@aldb]# chown–R mysql:mysql /usr/local/mysql

    Step 4.安装 MySQL

    [root@aldb]# cd /usr/local/mysql/scripts/

    [root@aldb scripts]#

    ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data

    注:如果提示如下:

    error while loading shared libraries: libaio.so.1: cannot open shared object file:

    No such file or directory

    则需要安装libaio相关系统组件:

    [root@aldb]# yum install libaio*

    Step 5.配置文件

    [root@aldb]# cd /usr/local/mysql/support-files/

    [root@aldb support-files]# mv /etc/my.cnf f /etc/my.cnf.bak

    [root@aldb support-files]# cp my-default.cnf /etc/my.cnf

    [root@aldb support-files]# cp mysql.server /etc/init.d/mysql

    [root@aldb]# vim /etc/init.d/mysql

    添加以下两行:

    basedir=/usr/local/mysql

    datadir=/data

    添加权限:

    [root@aldb]# chown mysql:mysql /etc/init.d/mysql

    [root@aldb]# chown mysql:mysql /etc/my.cnf

    [root@aldb]# chmod 775 /etc/init.d/mysql

    Step 6.修改 my.cnf

    在[mysqld]下添加以下几行:

    basedir = /usr/local/mysql

    datadir = /data

    innodb_buffer_pool_size = 5G

    innodb_log_file_size = 4G

    innodb_log_buffer_size = 10MB

    max_connections = 16384

    query_cache_size = 0

    skip_name_resolve = off

    auto_increment_offset = 2

    auto_increment_increment = 20

    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    Step 7.配置环境变量

    [root@aldb]# vim /etc/profile

    添加以下两行:

    #Set MySQL Environment

    export MYSQL_HOME=/usr/local/mysql

    export PATH=$PATH:$MYSQL_HOME/bin

    [root@aldb]# source /etc/profile

    Step 8.配置开机自动启动

    [root@aldb]# chkconfig --add mysql

    [root@aldb]# chkconfig mysql on

    Step 9.启动数据库

    [root@aldb]# su mysql

    [mysql@aldb]$ service mysql start

    Starting MySQL.. SUCCESS!

    Step 10.设置数据库账户登录密码

    [root@aldb]# cd /usr/local/mysql/bin/

    [root@aldb bin]# ./mysqladmin–u root password ‘XXXXXXXX’

    Step 11.登录数据库

    [root@aldb]# mysql–u root –p

    Step 12. iptables配置 3306 端口

    [root@aldb]# service iptables save

    [root@aldb]# vim /etc/sysconfig/iptables

    -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

    注:一定要加在-A INPUT -j REJECT --reject-with icmp-host-prohibited前面

    重启iptables

    [root@aldb]# service iptables restart

    3安装从节点(Slave)

    从节点安装步骤同主节点,目录结构全部相同。

    配置从节点,启动从库只读:

    [root@ECAM40124]# mysql–u root –p

    mysql> set global read_only = 1

    mysql> show global variables like '%read_only%';

    +------------------+-------+

    | Variable_name | Value |

    +------------------+-------+

    | innodb_read_only | OFF |

    | read_only | ON |

    | tx_read_only | OFF |

    +------------------+-------+

    3 rows in set (0.00 sec)

    4主从配置

    4.1主库配置

    Step 1.停止主节点

    [root@aldb]# su mysql

    [mysql@aldb]$ service mysql stop

    Step 2.修改主节点 my.cnf

    [root@aldb]# vim /etc/my.cnf

    [mysqld]

    #启用二进制日志

    log_bin = mysql-bin

    server-id=77 #(通常使用当前服务器 IP 地址的第 4 段)

    binlog_format=row

    Step 3.启动数据库

    [root@aldb]# su mysql

    [mysql@aldb]$ service mysql start

    Step 4.创建同步账号

    [root@aldb]# mysql–uroot –pxxxxx –e “GRANT REPLICATION

    SLAVE,RELOAD,SUPER ON *.* TO‘slave’@’100.68.2.78’ IDENTIFIED BY ‘XXXXX’; ”

    查看主库状态:

    mysql> flush privileges;

    mysql> show master status;

    注:记录下mysql-bin.xxxx文件名和位置,会在从节点上用到。

    4.2从库配置

    Step 1.停止从节点

    [root@ECAM40124]# su mysql

    [mysql@ECAM40124]$ service mysql stop

    Step 2.修改主节点 my.cnf

    [root@ECAM40124]# vim /etc/my.cnf

    [mysqld]

    #启用二进制日志

    log_bin = mysql-bin

    server-id=78 #(通常使用当前服务器 IP 地址的第 4 段)

    binlog_format=row

    Step 3.启动数据库

    [root@ECAM40124]# su mysql

    [mysql@ECAM40124]$ service mysql start

    Step 4.配置连接主数据库

    [root@ECAM40124]# mysql -uroot -pXXXXX -e "change master to

    master_host='100.68.2.xxx',master_user='slave',master_password='XXXXX',master_l

    og_file='mysql-bin.0000xxx',master_log_pos=xxx;"

    注:

    -pXXXXX表示从节点 MySQL 用户 root 的密码;

    master_password='XXXXX'表示主节点中 MySQL 用户 slave 的密码;

    master_log_file='mysql-bin.0000xxx'必须为主节点的 log_file 名称;

    master_log_pos=xxx必须为主节点的位置编号;

    Step 5.开始同步

    [root@ECAM40124]# mysql–u root -p

    mysql> start slave;

    mysql> show slave status \G;

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    注,如果Slave_IO_Running: Connecting,则说明 slave 连不上 master,

    或者pos错误,网络问题,查看 master 上的 iptables 中 3306 端口的配置。

    5.健康性验证

    Step 1.在主库创建 database

    Step 2.在从库查看 database

    Step 3.在主库创建表

    Step 4.在从库查看表

    Step 5.在主库 insert 数据

    Step 6.在从库查看数据

    Step 7.删除验证数据

    主库:drop table t_test;

    从库:show tables;

    5创建应用账号

    登录主库:

    1.创建应用账号

    CREATE USER 'pacloud'@'%' IDENTIFIED BY 'XXXXXXX';

    GRANT ALL ON *.* TO 'pacloud'@'%' WITH GRANT OPTION;

    flush privileges;

    2.创建只读账号

    CREATE USER 'readonly'@'%' IDENTIFIED BY 'XXXXXXX';

    GRANT SELECT ON *.* TO 'readonly'@'%';

    flush privileges;

    3.创建备份账号

    CREATE USER 'export'@'%' IDENTIFIED BY '#Cloud@Backup!';

    GRANT SELECT, SHOW, LOCK TABLES, TRIGGER ON *.* TO 'export'@'%';

    flush privileges;

    4、检查从服务器复制功能状态:

      mysql> show slave status\G

      *************************** 1. row ***************************

                  Slave_IO_State: Waiting for master to send event

    Master_Host: 192.168.2.222  //主服务器地址

    Master_User: mysync  //授权帐户名,尽量避免使用root

    Master_Port: 3306    //数据库端口,部分版本没有此行

                  Connect_Retry: 60

                  Master_Log_File: mysql-bin.000004

    Read_Master_Log_Pos: 600    //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos

                  Relay_Log_File: ddte-relay-bin.000003

                  Relay_Log_Pos: 251

                  Relay_Master_Log_File: mysql-bin.000004

    Slave_IO_Running: Yes    //此状态必须YES

    Slave_SQL_Running: Yes    //此状态必须YES

                        ......

    注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

    以上操作过程,主从服务器配置完成。

    相关文章

      网友评论

          本文标题:mysql集群部署

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