mysql innodb cluster安装记录
安装前确认已经安装了zlib-devel,因为后面要用
whereis zlib
如果没有安装,使用如下命令安装
yum install zlib-devel.x86_64
下载wget http://mirrors.sohu.com/python/2.7/Python-2.7.tar.bz2
解压 tar -xf Python-2.7.tar.bz2
cd Python-2.7
./configure
make all
make install
make clean
make distclean
mv /usr/bin/python /usr/bin/python2.bak
ln -s /usr/local/bin/python2.7 /usr/bin/python
python -V # 看到已经是2.7
yum修复
vi /usr/bin/yum
将#!/usr/bin/python 修改为 #!/usr/bin/python2.6,保存退出
添加用户
groupadd mysql
useradd -g mysql -s /bin/false mysql
下载
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
解压
tar zxf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.21-linux-glibc2.12-x86_64 /usr/local/
ln -s /usr/local/mysql-5.7.21-linux-glibc2.12-x86_64 /usr/local/mysql
./mysqld --user=mysql --initialize-insecure --basedir=/usr/local/mysql --datadir=/data/mysql
上一步可能遇到错误` error while loading shared libraries: libnuma.so.1 `,解决办法安装相应的包
yum install numactl
拷贝服务启动脚本
cp support-files/mysql.server /etc/init.d/mysql.server
添加开机启动
chkconfig --add mysql.server
chkconfig mysql.server on
添加环境变量
export PATH=$PATH:/usr/local/mysql/bin
编辑配置文件:
vi /etc/my.cnf
特别注意修改[mysqld]下的下面两项为对应值,因为我们修改了数据存储的位置
datadir=/data/mysql
socket=/data/mysql/mysql/mysql.sock
最终的my.cnf参照附件《my.cnf》,每个节点的server_id应该不同
另外因为各节点使用hostname通信,my.cnf中设置report-host为主机的hostname
启动
service mysql.server start
登录
mysql -h 127.0.0.1 -uroot
给root用户创建密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
下次登录使用mysql -h 127.0.0.1 -uroot -p
确认数据存储路径为/data/mysql
show global variables like "%datadir%";
下载
wget https://cdn.mysql.com//Downloads/MySQL-Shell/mysql-shell-1.0.11-linux-glibc2.12-x86-64bit.tar.gz
解压
tar zxf mysql-shell-1.0.11-linux-glibc2.12-x86-64bit.tar.gz
mv mysql-shell-1.0.11-linux-glibc2.12-x86-64bit /usr/local/
ln -s /usr/local/mysql-shell-1.0.11-linux-glibc2.12-x86-64bit /usr/local/mysql-shell
添加到环境变量
export PATH=$PATH:/usr/local/mysql-shell/bin
只需要安装一个
下载
wget https://cdn.mysql.com//Downloads/MySQL-Router/mysql-router-2.1.4-linux-glibc2.12-x86-64bit.tar.gz
解压
tar zxf mysql-router-2.1.4-linux-glibc2.12-x86-64bit.tar.gz
mv mysql-router-2.1.4-linux-glibc2.12-x86-64bit /usr/local/
ln -s /usr/local/mysql-router-2.1.4-linux-glibc2.12-x86-64bit /usr/local/mysql-router
添加到环境变量
export PATH=$PATH:/usr/local/mysql-router/bin
确保mysql已经启动,否则使用一下命令启动
service mysql.server start
进入mysql-shell 启用日志
mysqlsh --log-level=DEBUG3
在mysql-shell中
dba.verbose=2
连接
shell.connect('root@localhost:3306');
执行配置
dba.configureLocalInstance();
如果报错`/usr/local/bin/python: can't decompress data; zlib not available`,说明安装python2.7时没有注意zlib的问题,请按照第一步重新编译安装python
显示
成功配置
将node01的配置文件拷贝到node02,删除掉第5步生成的后面两行
group_replication_start_on_boot = OFF
group_replication = ON
修改下面3个
server_id=2
report-host=node02
loose-group_replication_local_address= "ip:24901"
登录mysqlsh,并执行配置
shell.connect('root@localhost:3306');
dba.configureLocalInstance();
停止mysql,在my.cnf末尾添加下面一行后启动mysql
group_replication_allow_local_disjoint_gtids_join=ON
通配置node02一样,注意修改为与该节点对应的内容
连接node01
shell.connect('root@node01:3306');
创建cluster
var cluster = dba.createCluster('myCluster');
在node01的shell中运行:
# 如果之前退出了shell,运行下面一行获取到cluster
var cluster = dba.getCluster('myCluster');
cluster.addInstance(‘root@node02:3306’);
同添加node02一样
cluster.status();
# 下面一行的myrouter是生成启动文件、配置文件的文件夹
mysqlrouter --bootstrap root@node01:3306 -d myrouter
# 这会生成一个文件夹 myrouter, 进入文件夹
# 可以修改配置文件mysqlrouter.conf
使用start.sh 和stop.sh进行启停
#bootstrap更多参数请参看https://dev.mysql.com/doc/mysql-router/2.1/en/mysqlrouter.html#mysql-router-command-options-bootstrap