mysql集群部署

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集群部署)