mysql的主从复制读写分离配置

准备: 首先准备两台虚拟机 ,用来配置数据库 (可以参考 https://www.linuxidc.com/Linux/2018-04/151924.htm)

一些基本概念:

主从复制

是一种数据备份的方案。
简单来说,是使用两个或两个以上相同的数据库,将一个数据库当做主数据库,而另一个数据库当做从数据库。在主数据库中进行相应操作时,从数据库记录下所有主数据库的操作,使其二者一模一样。

读写分离

是一种让数据库更稳定的的使用数据库的方法。
是在有从数据库的情况下使用,当主数据库进行对数据的增删改也就是写操作时,将查询的任务交给从数据库。

为什么要使用主从分离和读写操作呢?
主从复制:1、当主数据库出现问题时,可以当从数据库代替主数据库,可以避免数据的丢失。

2、可以进行读写分离

读写分离:1、避免从数据库进行写操作而导致的主从数据库数据不一致的情况,因为当主从数据库数据不一致时,那么从数据库最主要的备份任务就没有意义了。

2、减轻主数据库的压力。因为进行写操作更耗时,所以如果不进行读写分离的话,写操作将会影响到读操作的效率。

安装mysql:

  1. 种yum源 , 用yum 的方式安装 mariadb
sudo vi /etc/yum.repos.d/MariaDB.repo    


[mariadb]
name = MariaDB
baseurl =http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
  1. 通过yum安装mariadb软件,安装mariadb服务端和客户端
 sudo yum -y install MariaDB-client MariaDB-server MariaDB-devel

3.启动mysql 服务

 service mysql start  ------- 启动服务
 chkconfig mysql on   --------开机启动

配置MariaDB,键入命令

mysql_secure_installation

初始密码是空,直接按回车即可,然后输出新密码,重新确认新密码,之后关于安全设置。远程操作等一路回车即可。这样你的MariaDB便初始化完成了,下面测试登录吧

  1. 端口访问不到的问题,解决方法
vi /etc/sysconfig/iptables
# 添加 ****
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

注意:增加的开放3306端口的语句一定要在icmp-host-prohibited之前
保存并退出编辑,重启防火墙服务
service iptables restart

4 . 远程连接mysql时,提示“is not allowed to connect to this MySQL server”的解决方法

查看 mysql 的user 表 : select User,Host ,password from user;
create user root @% identified by '你的密码 ';
flush privileges;

主从复制开始

  1. 配置从库服务器

关闭mysql服务
service mysql stop
编辑配置文件 vi /etc/my.cnf.d/server.cnf
找到[mysqld], 在下方添加一行
server_id=2
保存后启动mysql服务
service mysql start

配置主服务器
编辑配置文件 vi /etc/my.conf.d/server.cnf
找到[mysqld], 在下方添加如下配置, webdb为需要同步的数据库名, 可以添加多个, 逗号分隔

log-basename=master
log-bin=mysql-bin
binlog-format=row
binlog-do-db=webdb
server_id=1

重启mysql
service mysql restart

登入mysql, 创建用于同步数据库的用户

以root登入mysql, 此命令后需输入密码
mysql -u root -p
CREATE USER ‘slave_user’@‘192.168.56.14’ IDENTIFIED BY ‘你的密码’; #创建用户,ip应为从库ip —(192.168.21.59是你从数据库的ip)
GRANT REPLICATION SLAVE ON . TO slave_user@‘192.168.56.14’ identified by ‘你的密码’;
#授权FLUSH PRIVILEGES;

查看并记录主库状态, 停机,打包数据,传到从库服务器

进入mysql命令行 mysql -u root -p

运行以下命令, 并记录显示的File和Position, 下步需要用

RESET MASTER;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

关闭mysql服务 service mysql stop
打包mysql数据文件 tar cvf mysql_data.tar /var/lib/mysql/
使用scp或其他方式传输到从库服务器 scp mysql_data.tar root@192.168.56.14:/home/

配置从库

确认mysql服务已关闭 service mysql stop
将主库的数据库文件覆盖到/usr/lib/mysql/

tar xvf mysql_data.tar -C /
启动mysql service mysql start
设置从库,登入myql命令行后,执行如下操作
停掉slave服务 stop slave;
修改配置, 注意MASTER_LOG_FILE和MASTER_LOG_POS修改为上一步SHOW MASTER STATUS中的File和Position
CHANGE MASTER TO MASTER_HOST=‘192.168.56.12’, MASTER_USER=‘slave_user’, MASTER_PASSWORD=‘cds-ucenter’ ,MASTER_PORT=3306, MASTER_LOG_FILE=‘mysql-bin.000005’, MASTER_LOG_POS=669, MASTER_CONNECT_RETRY=10;

开启slave服务 start slave;

查看从库的状态 show slave status \G;

最后配置成功,发现主从没有生效,原来是忽略这句话 :找到[mysqld], 在下方添加如下配置, webdb为需要同步的数据库名, 可以添加多个, 逗号分隔

主服务器查看从服务器状态 :show slave hosts; 查看主服务器状态 : SHOW MASTER STATUS;

读写分离
1.2)Linux 使用Mycat实现读写分离

  1. 首先要配置java 环境,Mycat需要java 环境 ,下载linux版的jdk, 建议1.8版本以上
    https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

然后上传的虚拟机 /usr/local 下面
2. 解压、配置环境变量

tar -zxvf  你的安装包 
#改名成java 
mv 你的包名  java

配置环境变量
在这里插入图片描述
下载mycat 安装包:
http://www.mycat.org.cn/,我这里下载的是
Mycat-server-1.6.7.1-release-20200209222254-linux.tar.gz

# 解压
tar -zxvf Mycat-server-1.6.7.1-release-20200209222254-linux.tar.gz
# 创建专门运行mycat账号
adduser mycat
# 切换到mycat文件夹路径下
cd /usr/local
# 将文件权限赋给mycat账号
chown mycat:mycat -R mycat
#配置环境变量并添加 export JAVA_HOME=/usr export MYCAT_HOME=/usr/local/mycat
vim /etc/profile

读写分离的配置

mycat 目录结构
在这里插入图片描述

下面进入conf ,进行配置文件设置:
在这里插入图片描述
配置 schema.xml 文件
vi schema.xml

在这里插入图片描述
连接信息配置
vim server.xml
在这里插入图片描述

#到bin路径下 :
cd /usr/local/mycat/bin
#启动
./mycat restart
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值