• ADADADADAD

    MySQL 主从同步与分离[ mysql数据库 ]

    mysql数据库 时间:2024-12-25 09:56:13

    作者:文/会员上传

    简介:

    说明:在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性、高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般来说都是通过主

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    说明:
    在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性、高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般来说都是通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载 能力这样的方案来进行部署与实施。
    MySQL的主从复制和MySQL的读写分离两者有着紧密联系,首先要部署主从复制,只有主从复制完成了,才能在此基础上进行数据的读写分离。
    .
    .
    模拟搭建使用的服务器拓扑图如下

    .
    .
    实验环境如下:

    服务器安装MySQL5.5版本
    .
    .
    实验包下载地址:
    链接: https://pan.baidu.com/s/16n0zJBGeB3iGyRvXzxL5xA 密码: tcsn
    .
    .
    实验步骤如下:
    .
    .
    1 . 在主服务器上
    先关闭防火墙,并检查是否安装了ntp,这里是默认安装好的
    systemctl stop firewalld.service
    setenforce 0 #关闭防火墙
    rpm -q ntp#检查是否安装ntp
    .
    .
    2 . 进入配置文件进行配置
    vim /etc/ntp.conf
    server 127.127.200.0#本地是时钟源
    fudge 127.127.200.0 stratum 8#设置时间层级为8

    systemctl start ntpd #开启时钟源

    .
    .
    3 .接下来在从服务器1和从服务2做相同的操作
    systemctl stop firewalld.service
    setenforce 0 #关闭防火墙
    systemctl start ntpd#开启时钟源
    /usr/sbin/ntpdate192.168.200.133 #向master同步时间

    .
    .
    4 .回到主服务器
    vim /etc/my.cnf#进行配置文件
    server-id = 11#服务器编号
    ......
    log-bin=master-bin#更改日志名称,方便区别
    log-slave-updates=true#允许从服务器日志文件同步主服务器日志文件


    .
    .
    5 .进入数据库
    GRANT REPLICATION SLAVE ON . TO 'myslave'@'192.168.200.%' IDENTIFIED BY '123123';#给予权限
    FLUSH PRIVILEGES;#刷新,即时生效
    show master status;#查看日志文件名

    .
    .
    6 .回到从服务器,两台从服务器做相同操作
    vim /etc/my.cnf #进行配置文件
    server-id= 22#更改端口号。注意,从服务器2的端口号不能与主、从服务器1相同
    relay-log=relay-log-bin#指定从服务器日志文件
    relay-log-index=slave-relay-bin.index#指定文件名与位置,
    systemctl restart mysqld.service #重启数据库


    .
    .
    7 . 进入数据库
    change master to master_host='192.168.200.133',master_user='myslave',master_password='123123',master_log_file='master-bin.000001',master_log_pos=339;#给凭证
    start slave; #开启从服务器身份
    show slave status \G;#查看同步状况
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes #显示yes 说明已经开始同步


    .
    .
    8 .这时候就可以在主服务器数据库中,新建一个数据库,验证是否同步



    同步成功
    .
    .
    主从同步做好后,下面进行读写分离操作
    .
    .
    1 .进入代理服务器——amoeba,首先还是老一步操作
    systemctl stop firewalld.service
    setenforce 0 #关闭防火墙
    mkdir /ooo #创建一个目录,挂载用
    mount.cifs //192.168.200.1/gx /ooo/ #将文件挂载到目录内
    cd /ooo/ #进入目录
    cp jdk-6u14-linux-x64.bin /usr/local/ #拷贝到系统文件下,让系统能识别
    cd /usr/local/
    ./jdk-6u14-linux-x64.bin#安装java环境包

    .
    .
    2 . 将文件移动或复制到/usr/目录下
    mv jdk1.6.0_14/ /usr/local/jdk1.6 #移动至系统文件下
    vim /etc/profile #进入配置文件,在末尾添加如下环境变量,系统可以用安装文件中的命令与函数:
    export JAVA_HOME=/usr/local/jdk1.6
    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin
    export AMOEBA_HOME=/usr/local/amoeba
    export PATH=$PATH:$AMOEBA_HOME/bin

    source /etc/profile #刷新生效
    .
    .
    3 . 解压文件到指定目录下
    mkdir /usr/local/amoeba #创建一个文件夹
    cd /ooo/
    tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/ #将压缩文件解压到此目录文件下

    .
    .
    4 . 给予文件相对的权限
    chmod -R 755 /usr/local/amoeba/
    /usr/local/amoeba/bin/amoeba
    amoeba start|stop #代表安装成功

    .
    .
    5 . 在三台MySQL上添加权限开放给amoeba访问
    grant all on . to 'test'@'192.168.201.%' identified by '123123';#amoeba使用test帐户访问三台数据库

    .
    .

    6 . 然后回到代理服务器,进行配置文件的操作
    cd /usr/local/amoeba
    vim conf/amoeba.xml
    30行---
    <property name="amoeba">root</property> #更改用户名
    32行---
    <property name="password">123123</property> #密码

    115行--117-
    <property name="defaultPool">master</property>#最大权限给master
    <property name="writePool">master</property>#写入权限给master
    <property name="readPool">slaves</property>#读取权限

    .
    .
    7 . 进入下一个配置文件,进行配置
    vim conf/dbServers.xml
    --26--29---去掉注释
    <property name="user">test</property>#登录身份
    <property name="password">123.com</property> #登录密码

    --42-47---主服务器
    < dbServer name="master"parent="abstractServer"> #主服务为master
    < property name="ipAddress">192.168.201.131</property> #主服务器ip地址
    --50-54--从服务器1
    < dbServer name="slave1"parent="abstractServer"> #从服务器1
    <property name="ipAddress">192.168.201.129</property> #ip地址
    复制6行做从服务2

    --63---
    < dbServer name="slaves" virtual="true"> #从服务器池
    --70---
    <property name="poolNames">slave1,slave2</property> #定义两台从服务

    .
    .
    8 . 到此,就可以开启服务了
    /usr/local/amoeba/bin/amoeba start& #开启amoeba服务

    .
    .
    9 .进入客户端
    systemctl stop firewalld.service
    setenforce 0 #关闭防火墙
    yum install mysql -y #安装MySQL命令

    .
    .
    10 .mysql -u amoeba -p123123 -h 192.168.200.131 -P8066#登录到群集数据库

    .
    .
    此时,从服务器只能读取主服务器,客户端能读取从服务器,写入到主服务器

    MySQL 主从同步与分离.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载