Linux系统下的数据库服务器主从复制、读写分离、同步数据到新的从机
(1)主从复制
① 主机Master的配置步骤:
a. 编辑etc下的my.cnf文件 ----> vi /etc/my.cnf 命令
注意:修改server-id、开启日志机制、复制或忽略复制的数据库
binlog-do-db=数据库名 要复制的数据库
binlog-ignore-db=数据库名 要忽略复制的数据库
b. 重启mysql服务:service mysqld restart
c. 登录mysql服务器:mysql –uroot –pmysql123
d. 查看主机的状态:
e. 关闭防火墙
②从机Slave的配置:
a. 编辑配置文件:vi /etc/my.cnf
注意:修改server-id、配置依赖的主机信息
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
b. 重启:service mysqld restart
c. 登录:mysql –uroot –pmysql123
d. 关闭slave:stop slave;
e. 要复制的主机:
change master to master_host='192.168.62.133',master_user='root',
master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=107;
注:参数值为主机ip、用户、密码、标红的为主机的状态信息
f. 启动:start slave;
g. 查看从机的状态:show slave status \G; ’\G’表示以网格形式展示
h. 关闭防火墙
i. 同样的方式配置另外一台slave机器
j. 测试:修改主机数据库表,查看从机是否同步
(2)读写分离
master主机负责写操作;slave从机负责读操作,在实战环境中,一般都是一主多从;写操作比较少,读操作比较多;在主从复制的基础之上配置读写分离,通过mycat来实现读写分离
1) 系统配置:
① 使用虚拟机克隆一台纯净版系统机器
② 安装JDK,并配置环境变量(安装(./;rpm -ivh);
编辑/etc/profile;source /etc/profile)
让配置生效:source /etc/profile
③ 下载mycat,通过文件传输工具,传输到Linux系统下的/usr目录下
④ 通过tar –zxvf 解压文件:tar –zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz就能使用
2) 配置Mycat环境变量:
① 配置Linux配置文件:vi /etc/profile
在文件底部添加mycat根目录和根目录的命令:
export MYCAT_HOME=/usr/mycat //Mycat安装路径的根目录
export PATH=$PATH:/usr/mycat/bin //将mycat命令添加到path中,可在任意目录下使用
让配置生效:source /etc/profile
② 在安装(解压)路径下配置conf配置文件和logs日志文件,切换到/usr/mycat目录下可查看
③ 修改/usr/mycat/conf目录下的schema.xml、server.xml、wrapper.conf配置文件
a. 修改配置/usr/mycat/conf /schema.xml文件:
属性解释:
balance属性:负载均衡类型,目前的取值有 4 种:
balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost 上
balance="1",全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,
简单的说,当双主双从模式(M1 ->S1 , M2->S2,并且 M1 与 M2 互为主备),正常情况下,
M2,S1,S2 都参与 select 语句的负载均衡
balance="2",所有读操作都随机的在 writeHost、 readhost 上分发
balance="3",所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost
不负担读压力,注意 balance=3 只在 1.4 及其以后版本有, 1.3 没有
writeType属性:负载均衡类型,目前的取值有 3 种:
writeType="0":所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost:重新启动后以切换后的为准,
切换记录在配置文件中:dnindex.properties . writeType="1",所有写操作都随机发送到配置的writeHost。writeType="2",没实现
switchType:属性,切换(-1表示不自动切换、1默认值,自动切换、2基于MySQL 主从同步的状态决定是否切换
b. 修改配置/usr/mycat/conf /server.xml文件:
c. 修改配置/usr/mycat/conf /wrapper.conf文件:vi wrapper.conf
④ 启动Mycat:mycat start
⑤ 关闭防火墙:service iptables stop
⑥ 测试:通过Navicat实现连接Mycat
ip为mycat所在计算机、端口默认8066、用户名和密码与在server.xml中配置的一致
在其数据库中插入一条语句,执行机制:mycat负责将语句发送到主机master,然后master根据配置好的主从复制,把sql语句发送到从机slave
⑦ 关闭防火墙
(3)新建一台从机,将数据同步到该新机
① 在主机master日志中读取日志信息,将最初的数据库日志放到master_log_file和master_log_pos属性上
② 将最开始主机状态信息,配置到新机:
登录到mysql服务器:mysql –uroot -p
stop slave;
change master to master_host='192.168.62.133',master_user='root',
master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=107;
注:参数值为主机ip、用户、密码、标红的为主机的状态信息
start slave;