一、主从复制方案

1.  在两台CentOS7虚拟机上分别部署MariaDB, 主数据库服务器IP为192.168.17.235, 从服务器IP为192.168.17.238. 从服务器通过调取主服务器上binlog日志, 在本地重建库、表, 实现与主服务器的AB复制.

二、步骤

1. 对两台虚拟机上现有的MariaDB 数据库初始化.

  为了在启用binlog日志及数据库同步之前保持主、从库的一致性, 最好对主、从服务器初始化(备份主服务器上现有的库, 手工导入到从服务器上). 当现有库、表引擎都是MyISAM时, 执行离线备份、恢复, 能极大的提高效率.   其它情况可以通过musqldump等工具来实现库的导出、导入.

(1)在主服务器192.168.17.235 上如下操作:

  1. mysql -u root -p     //登入MariaDB
    MariaDB>reset master;    //重置binlog日志
  2. MariaDB>quit;
  3.  
  4. mysqldump -u root -p --all-databases > /root/mysql.sql    //备份主服务器库
    scp /root/mysql.sql root@192.168.17.238:/root/    //将备份文件拷贝到从服务器

(2)在从服务器192.168.17.238上如下操作:

  1. mysql -u root -p < /root/mysql.sql    //将备份数据库导入从服务器MariaDB

2. 配置主服务器

  1. vim /etc/my.cnf
  2. [mysql]
  3. log_bin=c235-bin    //启用binlog日志, 并指定文件名前缀
  4. server_id=68      //指定服务器ID号
  5.  
  6. systemctl restart mariadb  

  1. MariaDB>grant replication slave on *.* to 'replicater'@'192.168.17.%' identified by '123';    //新建备份用户,授予复制权限“replication slave", 允许从slave服务器访问
  2. MariaDB>show master status;    //查看主服务器状态, 记录当前日志文件名和偏移位置

3. 配置从服务器

  1. vim /etc/my/cnf    
  2. [mysql]
  3. log_bin=c238-bin    //启用binlog日志, 并指定文件名前缀
  4. server_id=69       //指定服务器ID号, 不能与master的ID相同
  5. slave-net-timeout=60    //指定当主、从服务器网络中断时,重试超时时间
  6.  
  7. systemctl restart mariadb    //重启MariaDB

  1. MariaDB>change master to master_host='192.168.17.235',      //通过change master语句指定master的IP、同步用户名和密码、起始日志文件、偏移位置
  2. master_user='replicater',
  3. master_password='123',
  4. master_log_file='user.000004',
  5. master_log_pos=401
  6.  
  7. MariaDB>start slave;      //启动slave
    MariaDB>show slave status\G;    //查看slave服务器状态

4. 设置从服务器为只读

  从服务器作为主服务器的备份, 避免写入冲突, 在采用主、从复制结构时, 为保持主、从数据库的一致性, 用户不能在从服务器上执行数据库写入操作.

  可以通过my.cnf将从服务器配置为只读模式. 在只读模式下, 只有super权限的用户和slave同步线程才能写入.

  1. vim /etc/my.cnf
  2. [mysql]
  3. ...
  4. read-only=1    //设置从服务器为只读模式
  5. ...
  6.  
  7. systemctl restart mariadb

MariaDB实现主从配置及读写分离(一)的更多相关文章

  1. mysql主从配置,读写分离

    Mysql主从配置,实现读写分离 大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库 ...

  2. Mysql性能优化三:主从配置,读写分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

  3. 面试官你好,我已经掌握了MySQL主从配置和读写分离,你看我还有机会吗?

    我是风筝,公众号「古时的风筝」,一个简单的程序员鼓励师. 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面. 面试官:我看你简历上写的你们公司数据库是 ...

  4. mysql主从配置及其读写分离

    mysql主从配置意思就是一个主mysql服务器,一个从mysql服务器,一共要用到两台服务器.主服务器新增一个账号专门让从服务器来访问同步工作,主从配置完成后,主服务器主要就是新增和update操作 ...

  5. MySQL主从同步、读写分离配置步骤、问题解决笔记

    MySQL主从同步.读写分离配置步骤.问题解决笔记 根据要求配置MySQL主从备份.读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记:       现在使用的两台服务器已经 ...

  6. Redis系列之(二):Redis主从同步,读写分离

    1. Redis主从同步 Redis支持主从同步.数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制. 2. 配置主从同步 Mater Slave的模式,从Slave向Maste ...

  7. Redis系列之(二):Redis主从同步,读写分离(转)

    1. Redis主从同步 Redis支持主从同步.数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制. 2. 配置主从同步 Mater Slave的模式,从Slave向Maste ...

  8. MySQL主从复制技术与读写分离技术amoeba应用

    MySQL主从复制技术与读写分离技术amoeba应用 前言:眼下在搭建一个人才站点,估计流量会非常大,须要用到分布式数据库技术,MySQL的主从复制+读写分离技术.读写分离技术有官方的MySQL-pr ...

  9. MySQL/MariaDB数据库的PROXY实现读写分离

    MySQL/MariaDB数据库的PROXY实现读写分离 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ProxySQL概述 1>.各家互联网公司读写分离的解决方案 m ...

随机推荐

  1. MySQL Cluster 日常维护

    在前面几篇文章已经详细介绍了MySQL Cluster的搭建,配置讲解.而且相信大家都掌握了基本用法.现在我们来看看Cluster的日常维护.熟悉日常维护,将有助于工作中更好的管理和使用Cluster ...

  2. 最短路径算法----Dijkstra (转)

    Dijkstra算法的核心思想是贪心策略+动态规划 算法流程: 在以下说明中,s为源,w[u,v]为点u和v之间的边的长度,结果保存在dis[] 初始化:源的距离dis[s]设为0,其他的点距离设为无 ...

  3. 微信支付开发 c# SDK JSAPI支付开发的流程和微信大坑

    微信支付开发流程 1. 开通微信支付功能 省略 2. 下载微信的C#版的微信SDK 下载连接:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chap ...

  4. Netty 高性能之道 - Recycler 对象池的复用

    前言 我们知道,Java 创建一个实例的消耗是不小的,如果没有使用栈上分配和 TLAB,那么就需要使用 CAS 在堆中创建对象.所以现在很多框架都使用对象池.Netty 也不例外,通过重用对象,能够避 ...

  5. C# 字符串首字符大写

    我找到一些把字符串首字符大写的方法. 假如需要把字符串 "red" 转换为 "Red",把 "red house" 转为 "Red ...

  6. WinForm窗体上两个panel,怎么实现一个panel固定漂浮在另一个panel之上

    问题:winform窗体,要实现一个panel漂浮在另一个panel之上,但是运行的时候移动鼠标或者其他操作,上面那个panel就会消失?即只能显示一个panel. 原因:在窗体上拖放控件肉眼观察是平 ...

  7. git命令学习总结

    学习git 主要是因为github官网共享的资源很有学习价值.最近转型JAVA,所有特意去学习了下git软件.git软件可以去官网下载最新版本. 进入 git 仓库目录 右击 选中 Git Bash ...

  8. $.ajax()参数详解及标准写法(转)

    1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如 ...

  9. Java基础——数组

    一.大数据 如果基本的整型和浮点型精度不能够满足需求,那么可以使用java.math包含中的两个类:BigInteger和BigDecimal. 这两个类处理包含任意长度数字序列的数值.BigInte ...

  10. 推箱子 (hdu1254)(bfs双重广搜)

    推箱子 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission ...