Linux 安装Mariadb以及主从搭建

Posted l363130002

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 安装Mariadb以及主从搭建相关的知识,希望对你有一定的参考价值。

1.YUM源配置方法:阿里云yum源

1.1 安装wget

[root@localhost ~]# yum install -y wget

1.2 备份/etc/yum.repos.d/CentOS-Base.repo文件

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.back20190401

1.3 下载阿里云的Centos-7.repo文件

[root@localhost yum.repos.d]# wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
[root@localhost yum.repos.d]# wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

1.4 重新加载yum

[root@localhost yum.repos.d]# yum clean all

Loaded plugins: fastestmirror, refresh-packagekit, security

Cleaning repos: base extras updates

Cleaning up Everything

Cleaning up list of fastest mirrors

[root@localhost yum.repos.d]# yum makecache

Loaded plugins: fastestmirror, refresh-packagekit, security

Determining fastest mirrors

* base: mirrors.aliyun.com

* extras: mirrors.aliyun.com

* updates: mirrors.aliyun.com

手动配置仓库目录

2.1 找到yum仓库目录,创建repo文件

mkdir mariadb.repo
touch /etc/yum.repos.d/mariadb.repo

2.2 写入指定的mysql官方yum源 

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

2.3 此时yum会自动的加载这个repo文件,读取内容,此时yum会自动的加载这个repo文件,读取内容

yum install MariaDB-server MariaDB-client

3 配置数据库

3.1 拷贝my.cnf 配置文件

cp /usr/share/mysql/my-huge.cnf /etc/my.cnf

cp: overwrite ‘/etc/my.cnf’? y

3.2 启动mariadb数据库

systemctl start mariadb---------用管理工具启动数据库

systemcrl status mariadb-------查看状态,或者ps进程,netstat端口信息 

3.3 初始化数据库,清除匿名用户,以及test数据库,保证数据库安全,允许mysql远程登录

mysql_secure_installation---------初始化命令

3.4 修改mariadb数据库的的中文支持

(1)\\s查看数据库编码信息
(2)修改配置文件(yum源安装的在/etc/my.cnf),支持中文
vim /etc/my.cnf          
#服务端的编码添加如下内容
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

#客户端的编码如下
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

3.5 mysql远程登录的设置

grant all privileges on *.* to root@% identified by 123456;---------------不授权,远程无法登陆

3.6 数据库的备份与恢复

 备份-----mysqldump -uroot -p --all-databases > /tmp/alldata.sql
    恢复:
      方式一:进入数据库,执行source命令读取sql文件:
          (1)mysql -uroot -h192.168.160.134 -p
          (2)source /tmp/alldata.sql  
      方式二:使用登录命令导入数据
          mysql -uroot -p < /tmp/alldata.sql

3.7 主从复制(master-slave):Master主机

3.7.1 修改mysql配置文件,开启binlog日志功能

#服务端添加一下代码
[mysqld]
server-id=1
log-bin=mastermysql-bin

3.7.2 重启数据库生效binlog日志文件

systemctl restart mariadb

3.7.3登录数据库

mysql -uroot -p

3.7.4 主库master创建用于主从复制的用户

create user abc@% identified by 123456;

3.7.5授权slave给主从复制的用户

grant replication slave on *.* to abc@%;

grant select on *.* to abc@%;-------------授权查看给主从复制账号,以便后期登录使用

flush table with read lock; --进行锁表,防止在主从复制设置过程中数据写入------

导出当前master主库数据,发送给slave从库,保证起点的一致性:
mysqldump -uroot -p --all-databases > /tmp/alldata.sql
scp /tmp/alldata.sql root@192.168.160.130:/tmp/

slave从库机读取/tmp/alldata.sql进行master主库数据同步,删除多余数据库,同时进行slave从库机配置

unlock tables: slave从库机配置完后才能后,解锁,进行数据写入,查看从库是否正常执

3.8 主从复制(master-slave):Slave从机

下载mariadb-------------启动mariadb----------------是否初始化自选

3.8.1 将master主机的数据库备份文件发送到slave进行恢复

目的是保持主从数据库的数据和配置的一致性 
mysql -uroot -p < /tmp/alldata.sql
删除多余的数据库

3.8.2 修改slave从库机的配置文件,开启id, 设为只读模式--vim /etc/my.cnf

#服务端添加一下代码
[mysqld]
server-id=1000
read-only=true 

3.8.3 重启slave从库机的mariadb数据库

systemctl restart mariadb


3.8.4 执行命令,建立主从复制关系

mysql -uroot -p  --登录slave从库机数据库

change master to master_host=101.34.141.216, --主库master地址
master_user=abc, --用于主从复制在主库创建的用户
master_password=123456, --用于主从复制在主库创建的用户密码
master_log_file=mysql-bin.000001, --主库biinary log日志文件,主库
master_log_pos=616; --主库数据起点(在主库mysql中执行命令show master status可以查看)

3.8.5 开启从库的slave功能

 start salve

3.8.6 查看从库的状态,检测是否复制成功

 show slave status\\G;
    查看如下两个参数是否是yes,主从复制即为正确:
      Slave_IO_Running: Yes
      Slave_SQL_Running: Yes

4.MySQL数据同步,出现Slave_SQL_Running:no和slave_io_running:no问题的解决方法

4.1 问题描述:

当我们配置好MySQL主主同步时,是可以实现主主同步,但是重启机器后或者其他原因导致MySQL无法同步了

4.2 Slave两个关键进程

mysql replication 中slave机器上有两个关键的进程,死一个都不行,一个是slave_sql_running,一个是Slave_IO_Running,一个负责与主机的io通信,一个负责自己的slave mysql进程。

4.3 如果是Slave_SQL_Running:no

Linux

解决办法如下:

MariaDB [(none)]> stop slave;
MariaDB [(none)]> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\\G

Linux

4.4 如果是slave_io_running:no

Linux

解决办法如下:

1、查看主服务器

MariaDB [(none)]> show master status\\G

Linux

2、在从服务器上查看

Linux

问题所在:发现Master_Log_File没有对应。

3、出现Slave_IO_Running: No的机器上操作

MariaDB [(none)]> slave stop;
MariaDB [(none)]>CHANGE MASTER TO MASTER_LOG_FILE=mysql-bin.000026, MASTER_LOG_POS=0;
MariaDB [(none)]> slave start;
MariaDB [(none)]> show slave status\\G

Linux









以上是关于Linux 安装Mariadb以及主从搭建的主要内容,如果未能解决你的问题,请参考以下文章

使用python搭建Linux-mariadb主从架构

Linux系统中的mariadb主从数据库搭建

Linux CentOS 安装MySql以及搭建MySql主从复制

技术专辑MySQL集群搭建(主从)

Linux7/Centos7 Mariadb主从配置过程

MySQL主从复制原理及搭建全过程 񥽫