Linux 安装Mariadb以及主从搭建

别裁伪体亲风雅,转益多师是汝师。这篇文章主要讲述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
【Linux 安装Mariadb以及主从搭建】[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  手动配置仓库目录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

解决办法如下:
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


4.4  如果是slave_io_running:no

解决办法如下:
1、查看主服务器
MariaDB [(none)]> show master status\\G



2、在从服务器上查看

问题所在:发现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




















    推荐阅读