MYSQL的主从复制读写分离

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL的主从复制读写分离相关的知识,希望对你有一定的参考价值。

技术图片
技术图片
技术图片
技术图片
4,在master,slave1,slave2上分别安装MySQL

[root@master1 ~]# mkdir /abc   ##创建挂载点
    [root@master1 ~]# mount.cifs //192.168.100.1/LNMP-C7 /abc/   ##远程挂载
    Password for root@//192.168.100.1/LNMP-C7:  
    [root@master1 ~]# cd /abc/
    [root@master1 abc]# ls
    mysql-5.5.24
    [root@master1 abc]# tar zxvf mysql-5.5.24.tar.gz -C /opt/   ##解压
    [root@master1 opt]# yum install -y     > gcc gcc-c++     > ncurses     > ncurese-devel     ##控制终端屏幕显示的库
    > bison                  ##语法分析
    > make
    > cmake                 ##cmake工具
    > libaio-devel         ##系统调用来实现异步IO

    [root@slave1 opt]# useradd -s /sbin/nologin mysql   ##添加不可登录的mysql用户
    [root@slave1 opt]# cd /opt/mysql-5.5.24/
    [root@slave1 mysql-5.5.24]# mkdir /usr/local/mysql   ##创建安装目录
    [root@slave1 mysql-5.5.24]# cmake       ##配置
    > -DCMAKE_INSTALL_PREFIX=/usr/local/mysql     ##安装路径
    > -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock    ##sock文件路径
    > -DDEFAULT_CHARSET=utf8       ##字符集
    > -DDEFAULT_COLLATION=utf8_general_ci     > -DWITH_EXTRA_CHARSETS=all     > -DWITH_MYISAM_STORAGE_ENGINE=1      ##存储引擎
    > -DWITH_INNOBASE_STORAGE_ENGINE=1     > -DWITH_MEMORY_STORAGE_ENGINE=1     > -DWITH_READLINE=1     > -DENABLED_LOCAL_INFILE=1     > -DMYSQL_DATADIR=/home/mysql      ##数据文件路径
    > -DMYSQL_USER=mysql       ##用户
    > -DMYSQL_TCP_PORT=3306    ##端口

    [root@slave1 mysql-5.5.24]# make && make install   ##编译及安装
    [root@master1 mysql-5.5.24]# chown -R mysql.mysql /usr/local/mysql   ##设置mysql属主属组
    [root@master1 mysql-5.5.24]# vim /etc/profile   ##配置环境变量便于系统识别
    export PATH=$PATH:/usr/local/mysql/bin/
    [root@master1 mysql-5.5.24]# source /etc/profile   ##刷新配置文件
    [root@master1 mysql-5.5.24]# cp support-files/my-medium.cnf /etc/my.cnf   ##主配置文件
    cp:是否覆盖"/etc/my.cnf"? yes
    [root@master1 mysql-5.5.24]# cp support-files/mysql.server /etc/init.d/mysqld   ##启动文件
    [root@master1 mysql-5.5.24]# chmod 755 /etc/init.d/mysqld    ##设置权限
    [root@master1 mysql-5.5.24]# chkconfig --add /etc/init.d/mysqld    ##添加到service管理中
    [root@master1 mysql-5.5.24]# chkconfig mysqld --level 35 on   ##开机自启动
    [root@master1 mysql-5.5.24]# /usr/local/mysql/scripts/mysql_install_db    ##初始化数据库
    > --user=mysql     > --ldata=/var/lib/mysql     > --basedir=/usr/local/mysql     > --datadir=/home/mysql

    [root@master1 mysql-5.5.24]# vim /etc/init.d/mysqld    ##编辑启动脚本文件
    basedir=/usr/local/mysql   ##找到此处添加路径
    datadir=/home/mysql
    [root@master1 mysql-5.5.24]# service mysqld start    ##启动MySQL
    Starting MySQL.. SUCCESS! 
    [root@master1 mysql-5.5.24]# mysqladmin -u root password ‘abc123‘  ##设置密码

技术图片
技术图片
技术图片
技术图片

至此database主从同步成功!!!

技术图片
技术图片
11,修改amoeba服务器配置文件

[root@amoeba conf]# vim amoeba.xml  ##修改主配置文件
    #第30行

     <property name="user">amoeba</property>    ##从服务器同步主服务器的用户密码
    #第32行
     <property name="password">123456</property>

    #第117行去掉注释
     <property name="defaultPool">master</property>
     <property name="writePool">master</property>
     <property name="readPool">slaves</property>

    [root@amoeba conf]# vim conf/dbServers.xml   ##配置数据库配置文件

    #第26 至29行去掉注释
     <property name="user">test</property>

     <property name="password">123.com</property>

    #第42行添加主服务器地址
    <dbServer name="master"  parent="abstractServer">
     <property name="ipAddress">192.168.142.151</property>
    第52行添加从服务器slave1地址
    <dbServer name="slave1"  parent="abstractServer">
     <property name="ipAddress">192.168.142.163</property>
     ##复制6行添加服务器slave2地址
     <dbServer name="slave2"  parent="abstractServer">
     <property name="ipAddress">192.168.142.145</property>
    #第65行授权同步
     <dbServer name="slaves" virtual="true">
     <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">

    #末行添加从服务器名称
    <property name="poolNames">slave1,slave2</property>
     </poolConfig>
    [root@amoeba conf]# /usr/local/amoeba/bin/amoeba start&   ##开启amoeba服务
    [root@amoeba ~]# netstat -anpt | grep java   ##开启另一个终端查看开启情况
    tcp6       0      0 127.0.0.1:26268         :::*                    LISTEN      40925/java          
    tcp6       0      0 :::8066                 :::*                    LISTEN      40925/java          
    tcp6       0      0 192.168.142.160:34090    192.168.142.151:3306     ESTABLISHED 40925/java          
    tcp6       0      0 192.168.142.160:33866    192.168.142.145:3306     ESTABLISHED 40925/java          
    tcp6       0      0 192.168.142.160:55984    192.168.142.163:3306     ESTABLISHED 40925/java    

技术图片
技术图片
技术图片
技术图片

在主服务器上写如数据,在从服务器上读取数据,采用的是轮询机制,从而实现读写分离!!!

以上是关于MYSQL的主从复制读写分离的主要内容,如果未能解决你的问题,请参考以下文章

MySQL主从复制以及读写分离(❤❤❤❤含理论和实验❤❤❤❤大家中秋快乐!㊗)

MySQL主从复制以及读写分离(❤❤❤❤含理论和实验❤❤❤❤大家中秋快乐!㊗)

MySQL主从复制及读写分离实际部署与验证

MySQL主从复制及读写分离实际部署与验证

MySQL主从复制与读写分离配置及实操

MySQL 主从复制与读写分离 部署