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

MySQL(mariadb)

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

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

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

安装MySQL(mariadb)

1.在线下载阿里云的 yum 仓库,以及epel仓库

  1. CentOS-Base.repo epel.repo

2.安装mysql的方式

  1. yum install mysql-server mysql -y

3.安装mysql的方式也有2种,阿里云官方提供的mariadb软件包,版本可能太低,但是下载网速很快,方便学习使用

4.在企业里面,多半不会使用阿里云的mariadb版本,因为版本太低,安全性太低,公司会配置myariadb官方的yum仓库

  1. 1.手动创建mariadb的仓库文件
  2. touch Mariadb.repo
  3. 2.写入配置信息
  4. [mariadb]
  5. name = MariaDB
  6. baseurl = http://yum.mariadb.org/10.1/centos7-amd64
  7. gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
  8. gpgcheck=1
  9. 3.尝试安装最新版本mariadb
  10. yum install mariadb-server mariadb

5.使用mysql,启动

  1. systemctl start mariadb

6.初始化数据库

  1. mysql_secure_installation

配置数据库的中文支持

  1. 1.修改mysql的配置文件,支持中文编码
  2. cat /etc/my.cnf 和我一致就行
  3. [mysqld]
  4. character-set-server=utf8
  5. collation-server=utf8_general_ci
  6. log-error=/var/log/mysqld.log
  7. datadir=/var/lib/mysql
  8. socket=/var/lib/mysql/mysql.sock
  9. # Disabling symbolic-links is recommended to prevent assorted security risks
  10. symbolic-links=0
  11. # Settings user and group are ignored when systemd is used.
  12. # If you need to run mysqld under a different user or group,
  13. # customize your systemd unit file for mariadb according to the
  14. # instructions in http://fedoraproject.org/wiki/Systemd
  15. [client]
  16. default-character-set=utf8
  17. [mysql]
  18. default-character-set=utf8
  19. 2.在服务器上,修改了配置文件,都要重启数据库服务
  20. systemctl restart mariadb
  21. 3.utf8编码下,配置mariadb
  22. show create table stu;
  23. create table stu(id int,name char(10));
  24. insert into stu(id,name) values(1,"小王");
  25. show create database s16;

在远程用 mysql客户端去连接服务端,方式有哪些

  1. 1.navicat
  2. 2.cmd
  3. mysql -uroot -p -h 192.168.15.53
  4. 3.pycharm
  5. 4.pymysql python
  6. 5.orm django

配置mysql支持远程连接的sql语句

  1. 授权mariadb远程连接
  2. #授予root用户对所有的库表所有的权限,在所有的机器上操作,皆可登录
  3. # 此时是退出mysql数据库在外面执行的
  4. grant all privileges on *.* to root@'%' identified by 'centos';(密码)
  5. grant all privileges on *.* to root@'%' identified by 'root';
  6. 刷新授权表:
  7. flush privileges;

数据库备份与恢复

mysqldump命令用于备份数据库数据

  1. mysqldump -u root -p --all-databases > /tmp/db.dump
  2. 数据导入,方式有2
  3. 1.mysql -uroot -p < /tmp/db.dump
  4. 2.进入mysql命令行,输入source /tmp/db.dump
  5. systemctl stop firewalld
  6. systemctl disable firewalld

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

  1. [root@master ~]# mysql -uroot -p

MariaDB [(none)]> drop database s11;

进行数据恢复,吧刚才重定向备份的数据库文件导入到mysql中

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

MYSQL主从复制

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

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

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

  • 一主一从,单向主从同步模式,只能在Master端写入数据
  • 一主多从
  • 主主复制逻辑架构,此架构可以在Master1或Master2进行数据写入,或者两端同事写入(特殊设置,互为主从)

主从机制实现原理:

  1. (1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
  2. (2) slavemasterbinary log events拷贝到它的中继日志(relay log);
  3. (3) slave重做中继日志中的事件,将改变反映它自己的数据。

master主库配置

1.环境准备,准备2台机器,一个master 一个slave

  1. 192.168.15.53 主库
  2. 192.168.15.94 从库

2.配置主库的环境

  1. 1.修改主库的配置文件,开启binlog功能
  2. vim /etc/my.cnf
  3. [mysqld]
  4. server-id=1
  5. log-bin=s16-mysql-bin
  6. 2.重启数据库
  7. systemctl restart mariadb

3.创建用于数据同步的账号

  1. create user 'banzhang'@'%' identified by 'bz666';

4.授予这个账号,一个slave的身份标识

  1. grant replication slave on *.* to 'banzhang'@'%';

5.锁表

  1. flush table with read lock;

6.数据库信息导出

  1. mysqldump -uroot -p --all-databases > /opt/db.dump
  2. scp /opt/db.dump root@192.168.15.122:/opt/

mariadb从库的操作

1.阿里云的源,和官方源,同一安装软件包名如下

  1. yum install mariadb-server mariadb -y

2.配置从库的配置文件,开启server-id

  1. vim /etc/my.cnf
  2. 写入如下操作
  3. [mysqld]
  4. server-id=3
  5. read-only=true
  6. character-set-server=utf8
  7. collation-server=utf8_general_ci
  8. log-error=/var/log/mysqld.log

3.重启数据库

  1. systemctl restart mariadb

4.在从库,通过一条命令,开启主从同步

  1. 进入数据库
  2. mysql > change master to master_host='192.168.15.91',
  3. master_user='banzhang',
  4. master_password='bz666',
  5. master_log_file='s16-mysql-bin.000002', 这个和下面的参数要和主库的状态一致 show master status; 查看这两个参数的数值
  6. master_log_pos=331;

5.开启slave同步

  1. start slave;

6.检查主从同步状态

  1. show slave status\G
  2. 当你检查这2条参数,yes的时候,主从ok
  3. Slave_IO_Running: Yes
  4. Slave_SQL_Running: Yes

此时解锁主库!!

此时解锁主库!! unlock tables

此时解锁主库!!

验证主从同步是否正常

检查主从复制是否成功的关键在于

  1. MariaDB [(none)]> show slave status\G
  2. *************************** 1. row ***************************
  3. Slave_IO_State: Waiting for master to send event
  4. Master_Host: 192.168.119.10
  5. Master_User: chaoge
  6. Master_Port: 3306
  7. Connect_Retry: 60
  8. Master_Log_File: mysql-bin.000001
  9. Read_Master_Log_Pos: 1039
  10. Relay_Log_File: slave-relay-bin.000002
  11. Relay_Log_Pos: 537
  12. Relay_Master_Log_File: mysql-bin.000001
  13. Slave_IO_Running: Yes
  14. Slave_SQL_Running: Yes

tip:

注意此处还未配置从库的只读模式,只需在slave服务器上配置/etc/my.cnf,加上以下配置,并且在slave上创建普通用户,使用普通用户主从同步即可达到只读的效果

如果用root用户,无法达到readonly,这是一个坑

  1. [mysqld]
  2. character-set-server=utf8
  3. collation-server=utf8_general_ci
  4. log-error=/var/log/mysqld.log
  5. server-id=3
  6. read-only=true
  7. [client]
  8. default-character-set=utf8
  9. [mysql]
  10. default-character-set=utf8

Linux - centos7 下 MySQL(mariadb) 和 主从复制的更多相关文章

  1. linux centos7下mysql安装--韩国庆

    首先我先给大家介绍下MariaDB和mysql的区别. 上图,“MySQL之父”的骨灰级程序员Monty,但是mysql被Oracle收购后,Monty又开始去发展另一条数据库的道路,并且以Monty ...

  2. Linux(Centos7)下Mysql的安装

    1.1 查看mysql的安装路径: [root@bogon ~]# whereis mysql mysql: /usr/bin/mysql /usr/lib/mysql /usr/share/mysq ...

  3. Linux下MySQL/MariaDB Galera集群搭建过程【转】

    MariaDB介绍 MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证. MariaDB的目的是完全兼容MySQL,包 ...

  4. MariaDB Centos7 下安装MariaDB

    Centos7 下安装MariaDB by:授客 QQ:1033553122 1.下载安装文件 rpm包为例,对于标准服务器安装,至少需要下载client,shared,serve文件(安装时如果少了 ...

  5. Linux(CentOS7)下二进制安装MySQL5.7.26

    记录一下自己在 CentOS7 下二进制安装 MySQL5.7.26 的过程,之前使用 Linux(CentOS7)下rpm安装MySQL8.0.16 之后发现 rpm 方式安装不利于维护,也不利于单 ...

  6. Linux CentOs7 下安装 redis

    Linux CentOs7 下安装 redis 请将以下命令放入linux命令行中运行 如果安装过程前没有安装GCC请先安装  命令如下 $ yum install gcc-c++ $ wget ht ...

  7. 解决Linux系统下Mysql数据库中文显示成问号的问题

    当我们将开发好的javaWEB项目部署到linux系统上,操作数据库的时候,会出现中文乱码问题,比如做插入操作,发现添加到数据库的数据中文出现论码,下面就将解决linux下mysql中文乱码问题! 打 ...

  8. linux系统下MySQL表名区分大小写问题

    linux系统下MySQL表名区分大小写问题 https://www.cnblogs.com/jun1019/p/7073227.html [mysqld] lower_case_table_name ...

  9. LINUX系统下MySQL 压力测试工具super smack

    摘要:1.源文件下载地址:http://vegan.net/tony/supersmack/2.安装:注意在编译时,可以先把对应的libmysqlclient.so.*拷贝到/usr/lib3.测试: ...

随机推荐

  1. LeetCode总结--二分查找篇

    二分查找算法尽管简单,但面试中也比較常见.经经常使用来在有序的数列查找某个特定的位置.在LeetCode用到此算法的主要题目有: Search Insert Position Search for a ...

  2. cf 749D Leaving Auction

    Leaving Auction time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  3. ubuntu下如何查看和设置分辨率 (转载)

    转自:http://blog.csdn.net/jcgu/article/details/8650423 在ubuntu下可以使用xrandr来设置自己需要的分辨率.大致步骤如下: 1.使用xrand ...

  4. Frequent values(线段树+离散化)

    http://poj.org/problem?id=3368 题意:给出一个非降序排列的整数数组,对于询问(i,j),输出区间[i,j]中出现最多的值的次数. 思路:经典的RMQ,不过我用线段树做的. ...

  5. 345 Reverse Vowels of a String 反转字符串中的元音字母

    编写一个函数,以字符串作为输入,反转该字符串中的元音字母.示例 1:给定 s = "hello", 返回 "holle".示例 2:给定 s = "l ...

  6. [转]linux之初识SELinux

    转自:http://www.linuxidc.com/Linux/2014-07/104447.htm 1.selinux的概述 selinux相信大家一定不会陌生,它的全称是内核级加强型防火墙.在服 ...

  7. Vue初识:一个前端萌新的总结

    一.前言 时隔三年,记得第一次写博客还是2015年了,经过这几年的洗礼,我也从一个后端的小萌新变成现在略懂一点点知识的文青.如今对于前端的东东也算有一知半解,个人能力总的来说,也能够独立开发产品级项目 ...

  8. 6.11---swagger文件上传的写法【照着写就行了,主要是需要声明contentType未mutilpart---如果不设置这个,就无法识别文件的】

    MultipartFile 是直接接收前台传过来的文件,File是抽象出来的文件对象,用来表示文件,一般操作都是操作的File,所以需要将MultipartFile转为File controller写 ...

  9. AP聚类

    基于代表点的聚类算法可以说是聚类算法中"最经典的,最流行的,也是最前沿的". "最经典"是因为K均值是最早出现的聚类算法之一; "最流行"是 ...

  10. 完整版本的停车场管理系统源代码带服务端+手机android客户端

    该源码是停车场管理软件附带源代码 J2EE服务端+android客户端,也是一套停车场管理车辆进出的管理软,喜欢的朋友可以看看吧. 应用的后台管理主要功能介绍:1  机构管理 ,机构有从属管理< ...