最近在看sharding-jdbc(即将发布3.0版本,并更名Sharding-Sphere),俗话说,只看不练假把式。所以,准备在自己的云服务上搭建一套mysql主从环境,但是迫于只有一台云服务器,所以只能搭建单机版的mysq一主多从。
不经常搭建mysq服务器,只能在网上搜、参考,一搜一大把,也不知道哪个对、哪个错,经过不断尝试,总结出了一套正确的方案,特此记录。
服务器环境
- centos7 64位
可以通过rpm-qa|grep name来验证以下软件包是否已全部安装
cmake make gcc gcc-c++ ncurses-devel bison
若缺少相关软件包,则使用yum –y install方式安装
创建mysq用户
- 检测mysql用户是否存在
id mysql- 若不存在,创建
groupadd mysql useradd -r -g mysql mysql
下载安装包
- 下载
wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36.tar.gz
- 解压
tar zxvf mysql-5.6.36.tar.gz- 创建主从目录,并拷贝文件内容
(1)创建主mysql目录(2)创建从mysql目录mkdir -p /usr/local/mysql-m /usr/local/mysql-m/etc /opt/database-m /var/run/mysql-m /var/log/mysql-m
(3)复制数据到mysql主从目录mkdir -p /usr/local/mysql-s /usr/local/mysql-s/etc /opt/database-s /var/run/mysql-s /var/log/mysql-s
cd zxvf mysql-5.6.36 cp ./* -ir /usr/local/mysql-s/ cp ./* -ir /usr/local/mysql-m/
- 赋权限
#主库 chown -R mysql.mysql /usr/local/mysql-m chown -R mysql.mysql /opt/database-m chown -R mysql.mysql /var/run/mysql-m chown -R mysql.mysql /var/log/mysql-m #从库 chown -R mysql.mysql /usr/local/mysql-s chown -R mysql.mysql /opt/database-s chown -R mysql.mysql /var/run/mysql-s chown -R mysql.mysql /var/log/mysql-s
安装 主mysql
- 进入主mysql目录
cd /usr/local/mysql-m
- 执行cmake编译
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql-m -DMYSQL_DATADIR:PATH=/opt/database-m -DSYSCONFDIR:PATH=/usr/local/mysql-m/etc -DMYSQL_TCP_PORT=3307 -DWITH_DEBUG:BOOL=on
- 安装
make && make install
安装完成后,如下图所示:- 编辑配置文件
vim /usr/local/mysql-m/etc/my.cnf
[mysql] socket=/var/run/mysql-m/mysql-m.sock [mysqld] user=mysql port=3307 basedir=/usr/local/mysql-m datadir=/opt/database-m socket=/var/run/mysql-m/mysql-m.sock pid-file=/var/run/mysql-m/mysql-m.pid [mysqld_safe] log-error=/var/log/mysql-m/mysql-m-error.log
拷贝启动项
cp /usr/local/mysql-m/support-files/mysql.server /etc/rc.d/init.d/mysql-m
编辑启动项
vim /etc/rc.d/init.d/mysql-m
#修改conf=/usr/local/mysql-m/etc/my.cnf保存退出安装
执行/usr/local/mysql-m/scripts/mysql_install_db --basedir=/usr/local/mysql-m --datadir=/opt/database-m --user=mysql
如果没有权限,执行下面语句:
安装完成
启动服务
chkconfig --add mysql-m chmod 755 /etc/init.d/mysql-m service mysql-m start
如下图所示:检测是否启动成功
lsof -i:3307
安装 从mysql
步骤与安装主mysql类似执行安装完成后,如图所示:
配置主从
主
- 修改配置文件
vim /usr/local/mysql-m/etc/my.cnf,如下图所示
修改完成后,重启:service mysql-m restart
注意:如果这里只想同步一个数据库,可以单独设置:binlog-do-db=dbname登录主库mysql,并给从授权
#重置密码/usr/local/mysql-m/bin/mysqladmin -uroot password '123456' -S /var/run/mysql-m/mysql-m.sock
#登录
/usr/local/mysql-m/bin/mysql -uroot -p123456 -S /var/run/mysql-m/mysql-m.sock
#授权给从服务器
mysql> grant replication slave on *.* jack1@localhost identified by '123456'; mysql> grant replication slave on *.* jack2@localhost identified by '123456'; mysql>flush privileges;
查看主的状态,并记录file和position的值,后面要用
file:mysql-bin.000001
position:120
从
- 修改配置文件
vim /usr/local/mysql-s/etc/my.cnf
修改完成后,重启:service mysql-s restart- 登录从库mysql,执行同步主从操作
登录:/usr/local/mysql-s/bin/mysql -uroot -p -S /var/run/mysql-s/mysql-s.sock
执行同步语句:change master to master_host='localhost', master_user='root', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=120, master_port=3307;
start slave;
如图:
验证
经过以上步骤,就安装配置完成mysql主从配置。查看主从状态如下图所示:
彩蛋
如果是从远端服务器访问数据库,比如阿里云。需要登录数据库后设置访问权限。
- 授权主机访问:
MySQL>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
- 刷新权限:
MySQL>FLUSH PRIVILEGES;
- 退出:
MySQL>EXIT;
安装部署途中,遇到的问题参考博客:mysql-5.6.27源码安装及错误解决办法,特此鸣谢!
来源:oschina
链接:https://my.oschina.net/u/226613/blog/1808561