一.mariadb的基本操作

  1.远程连接

mysql  -uroot  -p  -h  127.0.0.1
mysql -uroot -p -h 192.168.226.128

  2.赋予远程连接的权限

grant all privileges on *.* to root@'%'  identified by 'root'

#赋予所有的权限在所有的库所有的表给root用户在任意ip登录,验证通过密码root

  3.修改root密码

#用root登录之后
set password =PASSWORD('hahhaha')

  4.创建mysql用户

create user tom@'%' identified  by 'hahha';
flush privileges;

  5.给用户查看所有库所有表权限

grant select on *.* to tom@'%' indentified by 'haha'

  6.给用户增加其他权限

grant update,delete,insert on *.* tom@'%' identified by 'haha' 

  7.授予权限的语法

#mysql使用grant命令对账户进行授权,grant命令常见格式如下:

grant 权限 on 库名.表名 to 账户@主机名    对特定数据库中的特定表授权
grant 权限 on 库名.* to 账户@主机名 对特定数据库中的所有表给与授权
grant 权限1,权限2,权限3 on *.* to 账户@主机名 对所有库中的所有表给与多个授权
grant all privileges on *.* to 账户@主机名  对所有库和所有表授权所有权限

  8.移除权限

revoke create on *.* from tom@"%" identified by 'haha';
revoke delete on *.* from tom@"%" identified by 'haha';

  9.查看权限

show grants for tiger@127.0.0.1;

  10.查询用户信息

use mysql;
select host ,user,password from user;

  11.数据库的备份与恢复

#备份所有
mysqldump -uroot -p --all-databases >/tmp/db.sql #备份单个数据库
mysqldump -u root -p luffycity >/tmp/luffycity.msql

  12.导入数据库

#方法一
#登录
source /tmp/luffycity.sql #方法二
mysql -uroot -p < /tmp/luffycity.sql #方法三
navicate

  13.删库

drop database 库名;

二 .主从复制 (确保主从的mariadb的数据库版本一致)

  MySQL数据库的主从复制方案,是其自带的功能,并且主从复制并不是复制磁盘上的数据库文件,而是通过binlog日志复制到需要同步的从服务器上。

  MySQL数据库支持单向、双向、链式级联,等不同业务场景的复制。在复制的过程中,一台服务器充当主服务器(Master),接收来自用户的内容更新,而一个或多个其他的服务器充当从服务器(slave),接收来自Master上binlog文件的日志内容,解析出SQL,重新更新到Slave,使得主从服务器数据达到一致。

  主从复制的逻辑有以下几种:

    一主一从,单向主从同步模式,只能在Master端写入数据

    一主多从

  

      双主主复制逻辑架构,此架构可以在Master1或Master2进行数据写入,或者两端同事写入(特殊设置)

  

在生产环境中,MySQL主从复制都是异步的复制方式,即不是严格的实时复制,但是给用户的体验都是实时的。
MySQL主从复制集群功能使得MySQL数据库支持大规模高并发读写成为可能,且有效的保护了服务器宕机的数据备份。

应用场景:

利用复制功能当Master服务器出现问题时,我们可以人工的切换到从服务器继续提供服务,此时服务器的数据和宕机时的数据几乎完全一致。
复制功能也可用作数据备份,但是如果人为的执行drop,delete等语句删除,那么从库的备份功能也就失效了.

主从机制实现原理:

  

1. 主数据库写入数据之后, 会有data changes(数据变化)记录
2. 有变化记录之后,将增删改的一些sql语句记录到本地的Binary log(二进制日志)中
3. 从库会一直开启着一个线程
4. 通过线程去读取这个二进制日志的内容
5. 从库会将数据写入到自己的Relay log(中继日志)中
6. 从库会将中继日志中的操作转化为SQL thread(SQL语句)
7. 通过转化的SQL语句写入到自己的数据库, 两边的数据就一致了

  1 准备两台机器

106.12.112.139# 主服务器master(可读可写)
192.168.226.128 # 从服务器slave(可读)
实际工作中数据库读取操作比较多,由于从服务器是读,所以从服务器的配置要强悍一些

  2. 两台机器上分别安装mariadb数据库

106.12.112.139
用户名: root
密码: 123 192.168.226.128
用户名: root
密码: 123

  配置主库(102.12.112.139)上操作

  3.在主数据库

停mariadb
systemctl stop mariadb

  4. 修改主数据库的配置文件

vim /etc/my.cnf
添加以下内容
[mysqld] # 如果配置文件里面有这一行,就只需要加以下两行配置就可以了
server-id=1
log-bin=qishi2-logbin

  

  5. 重启主数据库

systemctl restart mariadb

  6. 创建主从复制用户账号

create user 'tom'@'%' identified by 'tom';

  7.给主从库账号授权,说明给tom从库复制的权限,在102.12.112.139机器上复制

grant replication slave on *.* to 'tom'@'%';

  8. 实现对主数据库锁表只读,防止数据写入,数据复制失败

flush table with read lock;

   9. 查看并记录主数据库的状态

show master status;

   

  10. 确认主数据库是否已经成功锁表

  11. 导出主数据库的数据为alldb.sql

mysqldump -u root -p --all-databases > /opt/alldb.sql

  

  12. 把这个数据库文件拷贝到从数据库的/opt目录下

scp /opt/alldb.sql 192.168.226.56:/opt/

  配置从数据库(192.168.226.128)

  1.停止从数据库服务

systemctl stop mariadb

  2.修改从数据库的配置文件

vim /etc/my.cnf
添加以下配置
[mysqld]
server-id=5
read-only=true

  

  3.启动从数据库服务

systmectl start mariadb

  4.在从库上导入主数据库数据

mysql -u root -p

source /opt/alldb.sql

  

  5.查看主库的参数

show master status;

  6.配置复制的参数,Slave从库连接Master主库的配置(最重要的一步)

change master to master_host='106.12.112.139',
master_user='tom',
master_password='tom',
master_log_file='qishi2-logbin.000004 ',
master_log_pos=370;

  

  7.启动从库的同步开关,测试主从复制的情况

satrt slave

  8. 查看从库的状态

show slave status\G;

  

  主库的后续操作(106.12.112.139)

   1.导出数据完毕,并配置好从库开启主从同步后,再解锁主库,恢复可写;

unlock tables;

   2.验证主从复制情况

在主库上创建数据,查看从库数据同步状态
在主库(102.12.112.139)创建任意数据库
create database hahahaha; #发现从库看不到这个数据库,以内我们只给tom这个账户复制的权限而已
#说我再给tom查看的权限

  3. 在主库上给予qihang用户select的权限, 并刷新授权表

grant select on *.* to tom@"%" identified by "tom";
flush privileges;

  4. 在从库上登录tom用户, 并尝试创建一个库

mysql -utom -p  #这边不能加-h了,用本机登录

    

   

   5.验证主从读写分离状态(从库操作)

      从库上提示read-only表示主从同步读写分离已经成功完成

maria(mysql)的主从复制的更多相关文章

  1. mysql的主从复制是如何实现的

    前言 MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现,其复制功能并不是copy文件来实现的,而是借助binlog日志文件里面的SQL命令实现的主从复制,可以理解为 ...

  2. mysql数据库主从复制部署笔记

    主从复制是mysql中数据库实时同步的一个常用做法了,今天我来给各位介绍一下关于mysql数据库主从复制部署一个过程,希望此例子对各位同学参考参考. 数据库主从复制原理: 数据库的主从复制就是从mas ...

  3. mysql之主从复制

    原理--> 在数据库层面,复制语句或者行,因为在数据库层面,故只有主服务器生成,并放到二进制日志里面,才能复制给从服务器. 原理--> mysql的主从复制基于异步,主要有三个进程执行,分 ...

  4. Mysql中主从复制的原理、配置过程以及实际案例

    Mysql中主从复制的原理.配置过程以及实际案例1.什么是主从复制?原理:主从分离,什么意思呢?我们不妨画个图看看.如图1所示: 2.准备工作:预备两台服务器,我这里使用虚拟机安装了两个Centos6 ...

  5. mysql简单主从复制(一)

    MYSQL简单主从复制 master:172.25.44.1 slave:172.25.44.2 mysql5.7安装 master和slave均操作 准备rpm包:mysql-5.7.17-1.el ...

  6. Mysql数据库主从复制搭建

    Mysql数据库主从复制原理: 主库开启bin-log日志,同时生成IO线程.IO线程负责将用户写入数据库的sql语句记录在二进制日志bin-log,该记录过程可并发进行:生成标识号 server i ...

  7. liinux安装 mysql 及主从复制

    mariadb其实就是mysqlmysql已经被oracle收购,它即将闭源,马上要开始收费了因此还想免费试用开源的数据库mysql,就在centos7上,将mysql分支为mariadb 安装mar ...

  8. mysql (主从复制)(proxy , Amoeba)

    原址如下: http://heylinux.com/archives/1004.html Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中 ...

  9. MySQL的主从复制+双主模式

    MySQL的主从复制 部署环境: MySQL master 192.168.40.21 MySQL slave  192.168.40.22 思路: 当主MySQL上进行数据上的操作或者变化时,主My ...

  10. 使用 Xtrabackup 在线对MySQL做主从复制【转】

    1. 说明 1.1 xtrabackup mysqldump对于导出10G以下的数据库或几个表,还是适用的,而且更快捷.一旦数据量达到100-500G,无论是对原库的压力还是导出的性能,mysqldu ...

随机推荐

  1. Socket接口原理及用C#语言实现

    首先从原理上解释一下采用Socket接口的网络通讯,这里以最常用的C/S模式作为范例,首先,服务端有一个进程(或多个进程)在指定的端口等待客户来连接,服务程序等待客户的连接信息,一旦连接上之后,就可以 ...

  2. .NET读取服务器或本地文件

    //把本地文件信息读入数据流中                    FileStream stream = new FileStream(path, FileMode.Open, FileAcces ...

  3. python 字符串,元组, 列表,字典之间的转换

    #-*-coding:utf-8-*- #1.字典 dict = {'name': 'Zara', 'age': 7, 'class': 'First'} #字典转为字符串,返回:<type ' ...

  4. 编写高质量代码改善C#程序的157个建议——建议51:具有可释放字段的类型或拥有本机资源的类型应该是可释放的

    建议51:具有可释放字段的类型或拥有本机资源的类型应该是可释放的 在建议50中,我们将C#中的类型分为:普通类型和继承了IDisposable接口的非普通类型.非普通类型除了包含那些托管资源的类型外, ...

  5. delphi xe6 for android 自带控件LocationSensor优先使用GPS定位的方法

    delphi xe6 for android LocationSensor控件默认是优先使用网络定位,对定位精度要求高的应用我们可以修改原码直接指定GPS定位. 修改方法: 将C:\Program F ...

  6. C++初始化,之不明白篇 cout<<x<<endl 与 cout<<"x = "<<cout<<x<<endl的输出的值会不一样

    代码如下 #include <iostream> using namespace std; class point { public :     int x;     int y;     ...

  7. 搜索引擎Hoot的源码阅读(提供源码)

    开门见山,最近阅读了一下一款开源引擎的源码,受益良多(学到了一些套路).外加好久没有写博客了(沉迷吃鸡,沉迷想念姑娘),特别开一篇.Hoot 的源码地址, 原理介绍地址.外加我看过之后的注释版本,当然 ...

  8. I-team 博客全文检索 Elasticsearch 实战

    一直觉得博客缺点东西,最近还是发现了,当博客慢慢多起来的时候想要找一篇之前写的博客很是麻烦,于是作为后端开发的楼主觉得自己动手丰衣足食,也就有了这次博客全文检索功能Elasticsearch实战,这里 ...

  9. LoadRunner---杂问题&接口测试

    问题1] 响应时间是系统完成事务执行准备后所采集的时间戳和系统完成待执行事务后所采集的时间戳之间的时间间隔,是衡量特定类型应用事务性能的重要指标,标志了用户执行一项操作大致需要多长时间.[问题2] 系 ...

  10. [转]解读Unity中的CG编写Shader系列1——初识CG

    CG=C for Graphics  用于计算机图形编程的C语言超集 前提知识点: 1.CG代码必须用 CGPROGRAM ... ENDCG括起来 2.顶点着色器与片段着色器的主函数名称可随意,但需 ...