一、MYSQL(mariadb)

  MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。

  开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

  MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

  Red Hat Enterprise Linux/CentOS 7.0 发行版已将默认的数据库从 MySQL 切换到 MariaDB。

1、安装方式的比较
  我们知道linux上安装软件的方式有如下几种:

    - 源码编译安装

    - 下载rpm包安装

    - yum安装

  yum和源码编译安装的区别?

    - 路径有区别,yum安装的软件是他自定义的,源码编译安装的软件./configure --preifx=软件安装的绝对路径;

    - yum仓库的软件,版本可能比较低,而源码编译安装,版本可控;

    - 编译安装的软件,支持第三方功能扩展./configure  这里可以加上很多参数,定制功能;

  yum仓库之间的区别?

    - 我们之前使用过阿里云的yum仓库,其中有我们需要的一些软件包;

    - 假设要下载mysql软件,则mysql官网,也会提供rpm包,源码包,以及yum源,供给下载;

2、安装MariaDB的步骤

  阿里云提供的yum仓库和epel源仓库,它们都也有mariadb,但是版本可能会很低,所以我们下面就选用mariadb的官方yum源。

  第一步:添加 MariaDB yum 仓库

vi /etc/yum.repos.d/MariaDB.repo            编辑创建mariadb.repo仓库文件
  将下面代码写入创建的MariaDB.repo仓库中,即配置官方的mariadb的yum源
  [mariadb]
  name = MariaDB
  baseurl = http://yum.mariadb.org/10.1/centos7-amd64
  gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
  gpgcheck=

  第二步:在 CentOS 7 中使用yum命令安装 MariaDB

    当 MariaDB 仓库地址添加好后,你可以通过下面的一行命令轻松安装 MariaDB。

yum install MariaDB-server MariaDB-client -y     安装mariadb服务端和客户端

    注意:由于是国外镜像源,因此下载速度可能很慢

    若不想使用MariaDB官方的yum源,而选择使用阿里云的yum源中的mariadb,则将上述的Mariadb.repo删除,并清空yum缓存,然后使用如下命令从阿里云的yum下载

yum install mariadb-server  mariadb -y           注意阿里云的包名是小写,官方是大写

  第三步:启动mariadb相关命令

systemctl start mariadb          #启动MariaDB
systemctl stop mariadb #停止MariaDB
systemctl restart mariadb #重启MariaDB
systemctl enable mariadb #设置开机启动

    此时数据库客户端便可以去连接数据库,如下:

  第四步:初始化mysql

    在确认 MariaDB 数据库软件程序安装完毕并成功启动后请不要立即使用。为了确保数据库的安全性和正常运转,需要先对数据库程序进行初始化操作。确保mariadb服务器启动后,执行如下命令初始化:

mysql_secure_installation

    这个初始化操作涉及下面 5 个步骤:

      - 设置 root 管理员在数据库中的密码值(注意,该密码并非 root 管理员在linux系统中的密码,这里的密码值默认应该为空,可直接按回车键)。

      - 设置 root 管理员在数据库中的专有密码。

      - 随后删除匿名账户,并使用 root 管理员从远程登录数据库,以确保数据库上运行的业

务的安全性。

      - 删除默认的测试数据库,取消测试数据库的一系列访问权限。

      - 刷新授权列表,让初始化的设定立即生效。

    具体效果如下图:

3、设置mysql的中文编码支持,修改/etc/my.cnf

  进入数据库,输入 \s 查看数据库编码,如下图:

vi /etc/my.cnf           编辑文件/etc/my.cnf,在[mysqld]下边写入下面两行代码
  [mysqld]
  character-set-server=utf8
  collation-server=utf8_general_ci
systemctl restart mariadb         重启mariadb服务,读取my.cnf新配置

  登录数据库,再次\s查看字符编码,此时都为utf8,如下图:

  注意:此时若编码问题还没解决,那问题应该是数据库创建时没有指定编码,默认了非utf8编码,按以上方法修改完/etc/my.cnf文件后再进行创建的数据库编码就是utf8了。

MariaDB [(none)]> show create database s15;     查看数据库s15的编码

4、mysql基本命令

MariaDB [(none)]> set password = PASSWORD('redhat123');         修改mysql密码

  生产环境里不会死磕root用户,为了数据库的安全以及和其他用户协同管理数据库,就需要创建其他数据库账户,然后分配权限,满足工作需求

MariaDB [(none)]> create user wll@'127.0.0.1' identified by 'wll123';  创建用户wll
MariaDB [(none)]> use mysql; 切换到mysql数据库下,其中user表存放用户信息
MariaDB [mysql]> select host,user,password from user where user='wll'; 查看用户信息

  切换普通用户wll,查看数据库信息,发现无法看到完整的数据库列表

[root@master ~]# mysql -uwll -p -h 服务器地址           以普通用户wll身份登录数据库
MariaDB [(none)]> show databases; 查看数据库信息,无法看到完整的数据库列表

5、数据库权限设置

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

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

    使用root用户登录,进行权限设置

[root@localhost ~]# mysql -uroot -p

    授予用户wll操作所有数据库的所有表的所有权限

MariaDB [(none)]> grant all privileges on *.* to wll@127.0.0.1;
MariaDB [(none)]> flush privileges; 刷新权限表
MariaDB [(none)]> use mysql;
MariaDB [mysql]> show grants for wll@127.0.0.1;

  2)授权配置

    远程连接设置,设置所有库,所有表的所有权限,赋值权限给所有ip地址的root用户

> grant all privileges on *.* to root@'%' identified by 'password';
> create user 'username'@'%' identified by 'password'; 创建用户
> flush privileges; 刷新权限

6、数据库备份与恢复

  mysqldump命令用于备份数据库数据,导出当前数据库中的所有db到一个文件,如下:

[root@localhost ~]# mysqldump -u root -p --all-databases > /tmp/db.dump

  进入mariadb数据库,删除一个db,如下:

[root@localhost ~]# mysql -uroot -p
MariaDB [(none)]> drop database s15;

  进行数据恢复,把刚才重定向备份的数据库文件导入到mysql中,再查看数据库显示已经恢复

  方式一:通过命令方式导入

[root@localhost ~]# mysql -uroot -p < /tmp/db.dump

  方式二:登录数据库后通过source导入

[root@localhost ~]# mysql -uroot -p
MariaDB [(none)]> source /tmp/db.dump

二、mysql主从复制

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

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

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

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

  2)一主多从;

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

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

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

  主从机制实现原理,如下图:

    1)master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);

    2)slave将master的binary log events拷贝到它的中继日志(relay log);

    3)slave重做中继日志中的事件,将改变反映它自己的数据;

  练习主从复制架构:mysql的主从复制架构,需要准备两台机器,并且可以通信,安装好2个mysql,保持版本一致性。

mysql -V                   # 查看数据库版本

1、master主库配置

systemctl status mariadb                # 查看数据库状态
systemctl stop mariadb # 若数据库开启,则停止mariadb服务

  在主库的配置文件/etc/my.cnf文件中写入开启主库的参数

vi /etc/my.cnf                       # 编辑配置文件/etc/my.cnf,写入下面两行代码
server-id=                           # 一个标注,代表主库的身份id
log-bin=s15mysql-bin # 那个binlog的文件名
[root@localhost ~]# systemctl restart mariadb           # 重启mairadb,读取配置文件
[root@localhost ~]# mysql -uroot -p # 登录数据库
MriaDB [(none)]> show master status; # 查看日志文件的名字,以及数据起始点

2、master主库添加从库账号

  创建用于主从数据同步的账户

MriaDB [(none)]> create user 'yuanhao'@'%' identified by 'passwd';

  授予主从同步账号的,复制数据的权限

MriaDB [(none)]> grant replication slave on *.* to 'yuanhao'@'%';

  进行数据库的锁表,防止数据写入,从库导入数据后解锁

MriaDB [(none)]> flush table with read lock;       # 锁表
MriaDB [(none)]> unlock tables; # 解锁表,从库同步完数据后解锁

  将数据导出

[root@localhost ~]# mysqldump -u root -p --all-databases >  /tmp/zhucong.dump

  然后将主库的数据,发送给从库

[root@localhost ~]# scp /tmp/zhucong.dump root@从库:/tmp/

3、slave从库配置

  编辑配置文件/etc/my.cnf,写入从库的身份信息

vi /etc/my.cnf           # 编辑文件,写入下面代码
[mysqld]
server-id= # 标注从库身份,区别开主库即可

  检查一下主库和从库的参数信息

MriaDB [(none)]> show variables like 'server_id';       # 查看server_id
MriaDB [(none)]> show variables like 'log_bin'; # 查看是否开启log_bin

  登录从库的mysql,导入主库的数据,保持数据一致性,执行完毕后便可解锁了

  方式一:

[root@localhost ~]# mysql -uroot -p
MriaDB [(none)]> source /tmp/zhucong.dump

  方式二:

[root@localhost ~]# mysql -uroot -p < /tmp/zhucong.dump

  注意:导入前可先将从库中数据删除以确保数据一致!

  通过一条命令,开启主从同步

MriaDB [(none)]> change master to master_host='192.168.13.78',
-> master_user='yuanhao',
-> master_password='passwd',
-> master_log_file='s15mysql-bin.000001',
-> master_log_pos=571;

  开启从库的slave同步

MriaDB [(none)]> start slave; 

  查看主从同步的状态

MriaDB [(none)]> show slave status\G;  

  查看两条参数 ,确保主从正常

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

三、初识redis

  Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。

  Redis是VMware开发的开源免费的KV型NoSql缓存产品;

  Redis具有很好的性能,最多可以提供10万次/秒的读写;

  目前新浪微博团队组建了世界上最大规模的Redis集群;

  高速缓存介绍:

    - 高速缓存利用内存保存数据,读写速度远超硬盘;

    - 高速缓存可以减少I/O操作,降低I/O压力;

1、yum安装(前提是要配置好阿里云yum源,epel源)

yum list redis            # 查看是否有redis包,如下图

yum install redis -y          # 安装redis
systemctl start redis # 启动redis服务端,注意:使用yum安装的可以使用systemctl
netstat -tunlp|grep redis # 查看redis端口状态,若有结果则表示已经开启redis服务
redis-cli # redis 客户端工具
127.0.0.1:6379> ping
PONG

  进入交互式环境,执行ping,返回pong表示安装成功,如下图:

2、源码编译安装
  编译安装的优势是:

    - 编译安装时可以指定扩展的module(模块),php、apache、nginx都是一样有很多第三方扩展模块,如mysql,编译安装时候,如果需要就定制存储引擎(innodb,还是MyIASM);

    - 编译安装可以统一安装路径,linux软件约定安装目录在/opt/下面;

    - 软件仓库版本一般比较低,编译源码安装可以根据需求,安装最新的版本;

  第一步:下载redis源码包

[root@localhost opt]# wget http://download.redis.io/releases/redis-4.0.10.tar.gz

  第二步:解压缩

[root@localhost opt]# tar -zxf redis-4.0.10.tar.gz

  第三步:切换redis源码目录

[root@localhost opt]# cd redis-4.0.10
[root@localhost redis-4.0.10]# ls # 查看redis-4.0.10中文件

  注意:上面解压缩源码包后已经有了Makefile文件,如下图,所以下一步直接执行make编译即可

  第四步:编译源文件

[root@localhost redis-4.0.10]# make && make install

  第五步:指定配置文件/opt/redis-4.0.10/redis.conf启动redis

[root@localhost redis-4.0.10]# redis-server redis.conf     启动redis,如下图:

  我们发现启动redis服务器,终端hung住,要再开一个终端进行redis操作,我们可以通过开启redis的后台服务,使开启redis不再独占一个终端,这只需要我们修改redis.conf文件中的daemonize参数为yes,如下:

  vim /opt/redis-4.0./redis.conf           # 编译redis的配置文件
  将文件中的daemonize no 改为 daemonize yes

  注意:由于发现有些同学,在使用云服务器时,安装的redis3.0+版本都关闭了protected-mode(保护模式),因而都遭遇了挖矿病毒的攻击,使得服务器99%的占用率!!

  因此我们在使用redis时候,最好更改默认端口,并且使用redis密码(redis没有用户概念,redis只有密码)登录。配置文件redis.conf中的默认参数配置如下:

grep -v "^#"  redis.conf |  grep  -v "^$"          # 过滤出文件中的非空白行和非注释行

  1)更改bind参数,让redis可以远程访问

  bind 0.0.0.0

  2)更改redis的默认端口

  port       # 也可以改为其他端口

  3)使用redis的密码进行登录

  requirepass xxx                   设置登录redis的密码是xxx
  注意:redis.conf文件中requirepass是注释掉的参数,放开注释,后边写上密码即可

  第六步:通过新的端口和密码登录redis

  方式一:

[root@localhost ~]# redis-cli -p 6380             # 登录redis服务器
127.0.0.1:6380> auth xxx # 登录后,auth和刚设置的密码即可登录redis
OK           

  方式二(交互式的参数登录数据库,暴漏密码,不安全):

[root@localhost ~]# redis-cli -p 6380 -a xxx

  第七步:使用redis

    登录后就可以使用redis存取数据了,如下:

Linux(5)- MariaDB、mysql主从复制、初识redis的更多相关文章

  1. mysql主从复制、redis基础、持久化和主从复制

    一.mysql(mariadb)基础 1.基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroo ...

  2. Centos7 mariadb (mysql)主从复制实现

    一.mysql基本命令 .启动mysql systemctl start mariadb .linux客户端连接自己 mysql -uroot -p -h 127.0.0.1 .远程链接mysql服务 ...

  3. Linux下配置MySQL主从复制

    一.环境准备 本次准备两台Linux主机,操作系统都为CentOS6.8, 都安装了相同版本的MySQL.(MySQL5.7). 主从服务器的防火墙都开启了3306端口. 相关信息如下: [主服务器] ...

  4. Mariadb/Mysql 主从复制(1)

    一.原理 mysql的主从数据同步是一个异步复制过程,需要master开启bin-log日志功能,bin-log记录了master库中的增.删.修改.更新操作的sql语句,整个过程需要开启3个线程,分 ...

  5. Linux - centos7 下 MySQL(mariadb) 和 主从复制

    目录 Linux - centos7 下 MySQL(mariadb) 和 主从复制 MySQL(mariadb) 安装MySQL(mariadb) 配置数据库的中文支持 在远程用 mysql客户端去 ...

  6. Mysql之Linux中mariadb主从复制

    master主机mysql安装配置 1.下载mariadb(Centos7开始mysql的名字) (1)其它方式(不推荐):rpm安装/软件源安装 (2)yum安装(推荐): ①centos官方的yu ...

  7. Linux-基础学习(五)-mariadb主从复制以及redis学习

    开始今日份整理 1.mariadb的主从复制 主从复制大致图示: 1.1 mysql基本命令复习 linux下的操作 .启动mysql systemctl start mariadb .linux客户 ...

  8. linux mysql主从复制

    centos7 安装 mariadb 1 yum 源  -- 配置阿里的 2 rmp 方式 3 源码编译方式  -- 专业DBA 一些知识点: 虚拟环境 不影响 redis/ mariadb/mysq ...

  9. Linux中的mysql.redis

    1,Linux上的mysql MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可. 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源 ...

随机推荐

  1. 多个 label checkbox 组合 显示在同一个水平线上[前提Bootstrap框架]

    <th align="left" valign="middle"> <label class="checkbox inline fo ...

  2. 目标检测YOLO算法-学习笔记

    算法发展及对比: 17年底,mask-R CNN YOLO YOLO最大的优势就是快 原论文中流程,可以检测出20类物体. 红色网格-张量,在这样一个1×30的张量中保存的数据 横纵坐标中心点缩放到0 ...

  3. IOC和AOP的一些基本概念

    IOC和AOP的一些基本概念介绍 IOC 介绍 IOC 一.什么是IOC IoC就是Inversion of Control,控制反转.在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不 ...

  4. android Contacts/Acore进程常常被Kill,导致联系人开机后丢失怎么办?

    Contacts/Acore进程,在内存较少和开机进程过多的情况下会常常被 ActivityManager Kill 掉. 导致Sim卡联系人开机后未导入或者仅仅导入一部分,造成联系人丢失的现象,可是 ...

  5. 剑指 offer set 22 数组中的逆序数

    总结 1. 题目为归并排序的变形, 不过我完全没想到 2. 在归并排序进行字符组 merge 时, 统计逆序数. merge 后, 两个子数组是有序的了, 下次再 merge 的时候就能以 o(n) ...

  6. 常用CGI环境变量 转自https://blog.csdn.net/acmdream/article/details/58070066

    CGI环境变量名称 说明 REQUEST_METHOD 请求类型,如“GET”或“POST” CONTENT_TYPE 被发送数据的类型 CONTENT_LENGTH 客户端向标准输入设备发送的数据长 ...

  7. 【iOS开发】 AudioSession设置, 切换扬声器和听筒详解-保留其他应用音乐(备忘)

    本文转载至 http://blog.sina.com.cn/s/blog_693de6100101f1g8.html (2013-04-10 17:25:24) 转载▼ 标签: audiosessio ...

  8. Vmware虚拟机中安装centos,并实现联网

    1 安装所需要的软件 vmware workstation 12 永久激活码:5A02H-AU243-TZJ49-GTC7K-3C61N CentOS-7-x86_64-Minimal-1708 2 ...

  9. C#三种字符串拼接方法的效率对比

    C#字符串拼接的方法常用的有:StringBuilder.+.string.Format.List<string>.使用情况不同,效率不同. 1.+的方式 string sql = &qu ...

  10. 去掉第一次ssh连接的yes问题

    第一次执行的时候,有的机器可能会提醒输入ssh初次登录询问yes/no,如果要去掉这个yes/no的询问环节, 只需要修改本机的/etc/ssh/ssh_config文件中的"# Stric ...