当前位置: 首页 > news >正文

mysql搭建主从数据库及测试(ubuntu)

为什么80%的码农都做不了架构师?>>>   hot3.png

##优势

  1. 多服务器间数据实时同步
  2. 可实现数据读写分离或负载均衡,主数据库压力较大时将部分查询转至从数据库处理。由此减少数据库压力,增加应对并发能力
  3. 从库除了作为reader外,也可作为灾备适用,增加数据安全性

##准备

  • ubuntu(主:14.04,从:16.04)
  • mysql5.7

安装

安装数据库

在两台服务器上都装上mysql,具体可参考另外一篇博文:

https://my.oschina.net/chaon/blog/703562

配置主数据库

  1. 创建用于获取主数据库数据的用户,既从库访问主库时要用到的用户(我创建的是slave,密码123456)
mysql> create user slave; //创建新用户
//repl用户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限,密码为mysql。说明一下192.168.1.%,这个配置是指明repl用户所在服务器,这里%是通配符,表示192.168.1.0-192.168.1.255的Server都可以以repl用户登陆主服务器。当然你也可以指定固定Ip。
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.1.%' IDENTIFIED BY '123456';
  1. 修改配置文件mysqld.cnf
sudo cd /etc/mysql/mysql.conf
sudo vi mysqld.cnf

将以下几行写入到[mysqld]的下方

server-id=1
log-bin=master-bin
log-bin-index=master-bin.index
  1. 重启数据库
sudo service mysql restart
  1. 查看状态
mysql> show master status;

这里主要记住File和Position两个值,配置从库时会用到

配置从数据库

  1. 修改配置文件mysqld.cnf
sudo cd /etc/mysql/mysql.conf
sudo vi mysqld.cnf

将以下几行写入到[mysqld]的下方

server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin 
  1. 重启数据库
  2. 连接master
mysql>change master to master_host='192.168.1.105',
master_port=3306,
master_user='slave',
master_password='123456', 
master_log_file='master-bin.000003',
master_log_pos=1993;

注释: change master to master_host='master所在服务器的IP', master_port=master所在服务器的端口, master_user='同步用户名', master_password='同步用户密码', //下面连个值是在master中查看状态中查出来的两个值 master_log_file='master-bin.000003', master_log_pos=1993; 4. 开始同步

mysql>start slave;
  1. 查看同步状态
mysql>show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.105
                  Master_User: slave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000003
          Read_Master_Log_Pos: 3245
               Relay_Log_File: slave-relay-bin.000002
                Relay_Log_Pos: 1423
        Relay_Master_Log_File: master-bin.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 3245
              Relay_Log_Space: 1630
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
                  Master_UUID: 99c5977c-0228-11e7-935e-080027258c14
             Master_Info_File: /var/lib/mysql/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
到这里就算完成了,下面测试

##测试

  1. master中创建一个数据库,查看slave是否同步
  2. master的数据库中建一张表,查看slave是否同步
  3. master中在表中增加数据,查看salve是否同步
  4. master数据增删改操作,查看slave是否同步

. . . . . .

.

.

.

.

.

转载于:https://my.oschina.net/chaon/blog/852680

相关文章:

  • python 输入 和文件操作
  • Jupyter Notebook远程服务器配置[转]
  • 使用Nginx负载均衡搭建高性能.NETweb应用程序(转)
  • MySQL索引的使用方式和缺点
  • PHP在Windows IIS上传的图片无法访问的解决方法
  • LINUX系统安装MYSQL命令
  • Jmeter简单应用7
  • 【转】UNREFERENCED_PARAMETER的作用
  • Bootstrap框架下实现图片切换
  • SpringBoot学习之路:02.第一个程序Hello World及项目结构介绍
  • samba部署和优化
  • OSChina 周日乱弹 ——花季少女突然离开,昨夜他们做了什么?
  • VC++开发(一)——VC++自定义注释
  • 一个典型核心网络故障分析
  • 网站优化简单探讨
  • 08.Android之View事件问题
  • android 一些 utils
  • Android组件 - 收藏集 - 掘金
  • ES6--对象的扩展
  • gf框架之分页模块(五) - 自定义分页
  • Java 最常见的 200+ 面试题:面试必备
  • javascript数组去重/查找/插入/删除
  • mysql 5.6 原生Online DDL解析
  • MySQL QA
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • vue-loader 源码解析系列之 selector
  • 初识 webpack
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 精彩代码 vue.js
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 巧用 TypeScript (一)
  • 如何合理的规划jvm性能调优
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 原生js练习题---第五课
  • 1.Ext JS 建立web开发工程
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • !!java web学习笔记(一到五)
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (1)(1.13) SiK无线电高级配置(五)
  • (2022 CVPR) Unbiased Teacher v2
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NET简谈设计模式之(单件模式)
  • .Net下的签名与混淆
  • .net下简单快捷的数值高低位切换
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • ::什么意思
  • @property括号内属性讲解
  • [16/N]论得趣