master :172.17.0.3
slave :172.17.0.2
router :172.17.0.4
mysql 安装
https://www.cnblogs.com/netsa/p/7088494.html
https://blog.csdn.net/qq_43377292/article/details/86494103
搭建主从
master :
cat /etc/my.cnf
slave:
cat /etc/my.cnf
启动MySQL -master
进入后授权用户
grant repication slave,replication client on *.* to 'mysql'@'172.17.0.2' identified by '123'
slave 测试是否可以远程
mysql -umysql -h 172.17.0.3 -p123
进入master
进入从服务器
change master to master_host='172.17.0.3',master_port=3306,master_user='mysql',master_password='123',master_log_file='binlog.000002' ,master_log_pos=120;
启动slave
start slave;
查看
中途出现的问题
Got fatal error 1236 from master when reading data from binary log: ‘Could not find first log file name in binary log index file’
解决方法
flush logs;
刷新后重新获取master 的binlog文件 重新change master
建议:
先看binlog文件的内容 再找思路解决问题
/opt/mysql/bin/mysqlbinlog --base64-output=decode-rows -v /opt/mysql/var/mysql-bin.000001
本人解决的时候将binlog删除了之后重新获取的binlog 成功解决
希望有帮助!!!
读写分离配置
wget http://dev.mysql.com/get/Downloads/MySQL-Router/mysql-router-2.0.3-linux-glibc2.12-x86-64bit.tar.gz
解压安装并创建配置文件
启动
/usr/local/mysql-router/bin/mysqlrouter &
测试:
所有mysql服务器授权用户给router服务器权限;
由于为了更好的查看实验效果 , 我停掉了mysql主从,再master和salve上都建立勒测试表
read- only
write-only
因为route服务器上面没有mysql服务 所以测试的时候再mysql服务器上面测试
mysql -h 172.17.0.4 -p123 -P 7002 -u router -e "select * from test.t3"
mysql -h 172.17.0.4 -p123 -P 7002 -u router -e "select * from test.t3"