Centos7搭建主从数据库并配置读写分离

打印 上一主题 下一主题

主题 855|帖子 855|积分 2565

一.数据库主从配置

1.安装Mysql

2.创建用户并设置暗码

  1. CREATE USER 'user'@'%' IDENTIFIED BY '123456';
  2. update mysql.user set authentication_string=password("123456") where user="user";
  3. grant all privileges on *.* to user@'%' identified by '123456'; #授权
  4. select host,user,authentication_string from mysql.user;select host,user,authentication_string from mysql.user; #检查
  5. flush privileges;
复制代码
3.主从服务器配置

主服务器:192.168.200.231
从服务器:192.168.200.232
主服务器mysql配置

  1. [root@mysql-master ~]# grep -Ev "^#|^$" /etc/my.cnf
  2. [mysqld]
  3. datadir=/var/lib/mysql
  4. socket=/var/lib/mysql/mysql.sock
  5. symbolic-links=0
  6. sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
  7. server-id=129 #唯一
  8. log_bin=mysql-bin
  9. log-slave-updates=1
  10. binlog-do-db=test  #需要同步的数据库,如果没有本行表示同步所有的数据库
  11. binlog-ignore-db=mysql #被忽略的数据
  12. skip-grant-tables
  13. [mysqld_safe]
  14. log-error=/var/log/mysqld.log
  15. pid-file=/var/run/mysqld/mysqld.pid
复制代码
从服务器mysql配置

  1. [root@mysql-slave ~]# grep -Ev "^#|^$" /etc/my.cnf
  2. [mysqld]
  3. datadir=/var/lib/mysql
  4. socket=/var/lib/mysql/mysql.sock
  5. symbolic-links=0
  6. sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
  7. server-id=128 #唯一
  8. log_bin= mysql-bin
  9. relay-log= mysql-relay-bin
  10. read-only=1 #限制普通用户对从数据可的更新操作
  11. log-slave-updates=1
  12. replicate-do-db=test #要同步的数据库,不写本行表示同步所有数据库
  13. [mysqld_safe]
  14. log-error=/var/log/mysqld.log
  15. pid-file=/var/run/mysqld/mysqld.pid
复制代码
4.重启服务

5.验证是否能够链接到主数据库

  1. CHANGE MASTER TO
  2. MASTER_HOST='192.168.200.231',
  3. MASTER_USER='DBuser',
  4. MASTER_PASSWORD='123456',
  5. MASTER_PORT=3306,
  6. MASTER_LOG_FILE='mysql-bin.000004',  # 执行mysql> show master status; 查询对应的参数
  7. MASTER_LOG_POS=120,  # 执行mysql> show master status; 查询对应的参数
  8. MASTER_CONNECT_RETRY=10;
复制代码
start slave;
show slave status \G #查抄状态

二.配置mycat

1.安装java环境最幸亏jdk7以上版本

2.安装mycat

[root@localhost opt]# tar xf Mycat-server-1.6.6.1.tar.gz -C /usr/local
[root@localhost local]# useradd mycat
[root@localhost local]# chown -R mycat:mycat /usr/local/mycat
[root@localhost local]# passwd mycat
3.修改内存配置

wrapper.java.additional.10=-Xmx4G
wrapper.java.additional.11=-Xms1G
改成
wrapper.java.additional.10=-Xmx1G
wrapper.java.additional.11=-Xms256M
vi /etc/sysconfig/network
HOSTNAME=你的主机名(xxxx),我的主机名是mysql-loadbalancer
4.修改环境变量

[root@localhost local]# vi /etc/profile
  1. MYCAT_HOME=/usr/local/mycat
  2. PATH=$MYCAT_HOME/bin:$PATH
复制代码
[root@localhost local]# source /etc/profile
5.配置mycat

修改server.xml如下方:
  1.         <user name="root" defaultAccount="true">
  2.                 <property name="password"></property>
  3.                 <property name="schemas">TESTDB,mysql</property>
  4.                 <!-- 表级 DML 权限设置 -->
  5.                 <!--
  6.                 <privileges check="false">
  7.                         <schema name="TESTDB" dml="0110" >
  8.                                 <table name="tb01" dml="0000"></table>
  9.                                 <table name="tb02" dml="1111"></table>
  10.                         </schema>
  11.                 </privileges>
  12.                  -->
  13.         </user>
  14.         <user name="DBuser">
  15.                 <property name="password">123456</property>
  16.                 <property name="schemas">TESTDB,mysql</property>
  17.                 <property name="readOnly">true</property>
  18.         </user>
复制代码
修改schema.xml如下方:
  1. <?xml version="1.0"?>
  2. <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
  3. <mycat:schema xmlns:mycat="http://io.mycat/">
  4.     <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
  5.     </schema>
  6.     <schema name="mysql" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn2">
  7.     </schema>
  8.     <!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
  9.         /> -->
  10.     <dataNode name="dn1" dataHost="localhost1" database="test" />
  11.     <dataNode name="dn2" dataHost="localhost1" database="mysql" />
  12.     <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
  13.               writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
  14.         <heartbeat>select user()</heartbeat>
  15.         <writeHost host="hostM1" url="192.168.200.231:3306" user="DBuser" password="123456">
  16.             <readHost host="hostS1" url="192.168.200.232:3306" user="DBuser" password="123456" /> <!-- 读写分离; 写走hostM1,读走hostS1; hostM1宕机了, hostS1也不可用 -->
  17.         </writeHost>
  18.         <writeHost host="hostM2" url="192.168.200.232:3306" user="DBuser" password="123456" />  <!-- 高可用,hostM1宕机了, hostM2顶上 -->
  19.     </dataHost>
  20. </mycat:schema>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

罪恶克星

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表