zoukankan      html  css  js  c++  java
  • 如何实现数据库的读写分离 --实验环境

    实验环境
    两台虚拟机
    安装mysql mariadb mariadb-server
    开启服务
    systemctl start mariadb
    配置远程访问的用户
    mysql -uroot -p 进到数据库(root的默认密码为空所以输入命令后直接回车就行)
    use mysql

    开发端口命令:

    //MYSQL5.7
    GRANT ALL PRIVILEGES ON  *.* TO ‘root’@’%' IDENTIFIED BY ‘123’ WITH GRANT OPTION; (设置远程登陆用户root,IP为本机IP 密码为123

    //MYSQL8.0开放ip命令
    mysql> grant all privileges on *.* to 'root'@'%';

    主数据库设置:
    vim /etc/my.cnf
    在[mysqld]标签下面增加以下代码:
    server-id=1
    log-bin=master-bin
    重启服务
    systemctl restart mariadb.service

    mysql -uroot -p 进到数据库
    在主服务器的数据库上查询主服务状态
    SHOW MASTER STATUS

    这里会出现日志文件的File和position,这个在后面会用的到

    从数据库设置
    1.用vim打开my.cnf:

    vim /etc/my.cnf

    2.在[mysqld]标签下面增加以下代码:

    server-id=2 #这个id必须不能和主数据库相同
    read-only=on #设置该数据库是只读状态
    relay-log=relay-bin

    重启服务
    systemctl restart mariadb.service

    进入到数据库
    mysql -uroot -p
    执行下面语句,
    change master to master_host=‘192.168.0.220’,master_user=‘wl’,master_password=‘123’, master_log_file=‘master-bin.000003’,master_log_pos=2077;
    (master_host:主数据库IP
    master_user:主数据库所设置的远程连接用户名
    master_password:主数据库所设置的远程连接密码
    master_log_file=‘master-bin.000003’:所生成的二进制日志文件,在上一张图片中有显示)
    master_log_pos=2077:二进制日志文件的端口号(上张图片有显示)

    启动slave同步(在数据库中)

    START SLAVE;

    7.在slave服务器上查看slave同步的状态

    show slave statusG

    当图片中的内容为YES是说明两个数据库同步设置完成
    你可以利用mysql工具进行测试
    下图是我用mysql链接的两个数据库的图片

    其中master是主数据库,slave是从数据库,两个数据库进行数据同步是根据二进制的日志文件进行的,一开始的状态两个数据库必须保持数据库名字相同,和表的名字相同,否则会出现找不到数据库的错误


    出现这个错误的主要原因是因为当时的日志文件只保存了当时的数据库状态,将当下的两个数据库进行了连接,当主数据库新增加一个数据库时,从数据库无法匹配到主数据库,就出现了找不到数据库的错误
    解决方法:
    1 将主数据库新建的数据库删除,在原有的数据库上进行增删操作,再重新执行上面的操作
    2 在从数据库中增加与主数据库相同的数据库,再重新执行上面的操作

  • 相关阅读:
    Spring——框架
    Spring——简介
    系统常识——系统碎片
    php5.3.3以上重启php-fpm的方法
    linux后端跑redis
    php的post
    微信场景二维码
    phantomjs和selenium模拟登陆qq空间
    python登录知乎
    python的request抓https的警告问题
  • 原文地址:https://www.cnblogs.com/ningwuyu/p/12091949.html
Copyright © 2011-2022 走看看