mysql集群--基于centos7
1 MySQL主从备份
主机:192.168.43.8
从机:192.168.43.6
条件:主机和从机都安装了mysql,开启了二进制日志
安装mysql (mysql 和 mysql-server) 参考:https://www.cnblogs.com/CloudComputing-binbin/p/14458826.html
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm #下载包 rpm -ivh mysql-community-release-el7-5.noarch.rpm yum install mysql-server
其他linux发行版的可以直接:
yum install mysql mysql-server
第一步:主机和从机都开启二进制日志
vi /etc/my.cnf
在[mysqld]后加上下面两行
log-bin=mysql-bin server-id=6 //server-id 为ip地址最后一段
我的主机server-id=8 , 从机server-id=6
systemctl restart mysqld
第二步:在主服务器上授权,从服务器保存授权的信息主服务器 192.168.43.8
grant replication slave on *.* to slave@'192.168.43.6' identified by '123456'; //用户,密码,ip为从机的
show master status; //要用到file 和 position
第三步:接受授权
从服务器 192.168.43.6
change master to master_user='slave',
master_password='123456',
master_host='192.168.43.8',
master_log_file='mysql-bin.000001',
master_log_pos=330;
在/var/lib/mysql 目录下会生成 master.info 文件
开启从服务器并查看
start slave; //进入mysql
show slave status\G; //下图双yes即成功,第一个为解析文件,第二个为解析sql语法
一主多从也是如此
测试在主服务器创建一个新的数据库,看看从机有没有
主从服务器:
1 备份的作用
2 从服务器分摊主服务器的查询压力(负载均衡)
2 主主备份 (相当于互为主从)
主主服务器: 均摊写压力
/etc/my.cnf 配置文件 log-bin=mysql-bin //开启二进制文件 server-id=8 replicate-do-db=text //需要写入二进制文件(需要备份) binlog-ignore-db=mysql //不需要写人二进制文件(不需要备份) binlog-ignore-db=information_schema auto-increment-increment=2 //防止主键冲突,数据id从1开始,每次加2,即1,3,5... auto-increment-offset=1
两台主服务器都配置一样的,并且相互授权(都执行第一,二步)
两边都执行,就是说,互为主从
3 一主多从一个主服务器授权给两个从服务器
从服务器都执行第三步
4 多主一从从服务器开通两个线程(给两个端口),一个给一个主,另一个给另一个主
两主服务器:开启bin-log 以及增加授权(第一,二步)
从服务器:配置/etc/my.cnf 在最后面加
[mysqld_multi] mysqld=/usr/bin/mysqld_safe mysqladmin=/usr/bin/mysqladmin log=/tmp/multi.log #下面为两个线程,除了server-id相同,其他都不同 [mysqld10] port=3306 datadir=/var/lib/mysqla/ pid-file=/var/lib/mysqla/mysqld.pid socket=/var/lib/mysqla/mysql.sock user=mysql server-id=30 [mysqld20] port=3307 datadir=/var/lib/mysqlb/ pid-file=/var/lib/mysqlb/mysqld.pid socket=/var/lib/mysqlb/mysql.sock user=mysql server-id=30
初始化数据库,生成目录mysqla, mysqlb
mysql_install_db --datadir=/var/lib/mysqla --user=mysql //初始化数据库,生成mysqla
mysql_install_db --datadir=/var/lib/mysqlb --user=mysql //初始化数据库,生成mysqlb
设置mysqla, mysqlb目录及以下目录文件的属主为mysql(防止出现权限问题)
chown -R mysql /var/lib/mysqla/ chown -R mysql /var/lib/mysqb/
启动从服务器线程
mysqld_multi --defaults-file=/etc/my.cnf start 8
netstat -anpt //查看tcp端口是否开放3306 mysqld_multi --defaults-file=/etc/my.cnf start 9
netstat -anpt //查看端口是否开放3307
//后面的数值对应主机的server-id
登录并保存授权信息
mysql -u root -p -P 3306 -S /var/lib/mysqla/mysql.sock 进入mysql后
change master to master_user='slave',master_password='123456',master_host='192.168.43.8',master_log_file='mysql-bin.000001',master_log_pos=330;
start slave;
show slave status\G;
// -S, --socket=name #连接服务器的sockey文件
换 3307再来一遍
mysql -u root -p -P 3307 -S /var/lib/mysqla/mysql.sock 进入mysql后 change master to master_user='slave',master_password='123456',master_host='192.168.43.8',master_log_file='mysql-bin.000001',master_log_pos=330; start slave; show slave status\G;
测试:
分别在两主服务器创建数据库,然后进入从服务器的相应端口查看是否存在新创建的数据库
进入从服务器数据库
mysql -u root -p -P 3306 -S /var/lib/mysqla/mysql.sock mysql -u root -p -P 3307 -S /var/lib/mysqla/mysql.sock