美文网首页
mysql+centos7+主从复制操作 2018-11-13

mysql+centos7+主从复制操作 2018-11-13

作者: Mr_Du_Biao | 来源:发表于2018-11-13 23:54 被阅读0次

一、安装mysql(MariaDB)

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。
开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

第一步:添加 MariaDB yum 仓库

  • 1、首先在 RHEL/CentOS 和 Fedora 操作系统中添加 MariaDB 的 YUM 配置文件 MariaDB.repo 文件。编辑创建mariadb.repo仓库文件
    vi /etc/yum.repos.d/MariaDB.repo
  • 2、添加repo仓库配置
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

第二步:在 CentOS 7 中安装 MariaDB

当 MariaDB 仓库地址添加好后,你可以通过下面的一行命令轻松安装 MariaDB。
yum install MariaDB-server MariaDB-client -y
mariadb下载太慢的问题:

  • 1.问题来源,那肯定是mariadb.repo这个仓库源的问题
    • 为什么要配置这个(因为这是官方提供的mariadb rpm包源,下载一定不会出错,版本一定是最新的)-但是问题就是,yum install mariadb-server的时候去国外的源仓库下载,速率可能很慢
    • 解决办法就是:安装epel源,通过他下载:
      面临的问题是:
      -可能软件包是旧的,没有更新

第三步:启动mariadb相关命令

systemctl start mariadb
安装完成
mariadb数据库的相关命令是:

systemctl start mariadb  #启动MariaDB

systemctl stop mariadb  #停止MariaDB

systemctl restart mariadb  #重启MariaDB

systemctl enable mariadb  #设置开机启动

二、初始化mysql

  • 在确认 MariaDB 数据库软件程序安装完毕并成功启动后请不要立即使用。为了确保数据 库的安全性和正常运转,需要先对数据库程序进行初始化操作。这个初始化操作涉及下面 5 个 步骤。
    • ➢ 设置 root 管理员在数据库中的密码值(注意,该密码并非 root 管理员在系统中的密 码,这里的密码值默认应该为空,可直接按回车键)。
    • ➢ 设置 root 管理员在数据库中的专有密码。
    • ➢ 随后删除匿名账户,并使用 root 管理员从远程登录数据库,以确保数据库上运行的业务的安全性。
    • ➢ 删除默认的测试数据库,取消测试数据库的一系列访问权限。
    • ➢ 刷新授权列表,让初始化的设定立即生效。

确保mariadb服务器启动后,执行命令初始化
mysql_secure_installation
执行完初始化命令后会弹出如下页面

image.png

三、mysql管理用户操作

  • 修改mysql用户密码
    set password = PASSWORD('密码');
    生产环境里不会死磕root用户,为了数据库的安全以及和其他用户协同管理数据库,就需要创建其他数据库账户,然后分配权限,满足工作需求。
  • 创建新用户
    create user 用户名@'用户IP地址' identified by '密码';
  • 查看用户的信息
    先执行:use mysql;
    再执行:select host,user,password from user where user='用户名';
    image.png
  • 切换用户
    mysql -u用户名 -p -h 127.0.0.1
    查看用户数据库列表show databases;

四、数据库权限设置

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

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

退出数据库,使用root登录,开始权限设置

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

MariaDB [(none)]> use mysql;

MariaDB [(none)]> grant all privileges on *.* to 用户名@127.0.0.1;

MariaDB [mysql]> show grants for 用户名@127.0.0.1;

移除权限
MariaDB [(none)]> revoke all privileges on *.* from 用户名@127.0.0.1;

五、mysql中文编码设置

编辑mysql配置文件/etc/my.cnf
在配置文件中加入以下内容:

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
log-error=/var/log/mysqld.log
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

修改完配置文件,需要重启mysql,使得生效
systemctl stop mariadb
systemctl start mariadb

六、mysql远程登录授权配置

注意!关闭防火墙
iptables -F 清空防火墙规则
systemctl stop firewalld 关闭防火墙
systemctl disable firewalld 永久关闭防火墙开机自启

  • 1、新建一个用于远程登录的账户
    create user 'username'@'%' identified by 'password';
  • 2、给与账户远程登录的权限,授权
    grant all privileges on *.* to 'username'@'%' identified by 'password';
  • 3、刷新权限表,防止不生效
    flush privileges;
  • 4.此时可以在windows登录你的linux数据库拉!!!!
    • 首先在linux 上启动mysql服务service mysqld start
    • wingdows上输入:mysql -uyonghu2 -p -h 10.0.0.10

七、数据库备份与恢复

  • 1.备份数据
    mysqldump -u root -p --all-databases > /tmp/db.dump
  • 2、恢复mysql数据
    • 方法一:登录数据库后输入:source /tmp/db.dump
    • 方法二:在登录时候,进行数据写入mysql -uroot -p < /tmp/db.dump

linux快捷命令:

  • ctrl+ d 等于logout 退出回话
  • ctrl + shift + r 等于快捷登录

八、mysql主从同步配置

主库设置:

  • 首先把主机名改为master:hostnamectl set-hostname master
  • 然后从新连接
  • 1.修改配置文件,开启主从同步的功能
    修改配置文件:vim /etc/my.cnf
    在文件的[mysqld]下边加入:
    server-id=1 server-id服务的唯一标识(主从之间都必须不同)
    log-bin=mysql-bin log-bin启动二进制日志名称为mysql-bin
    然后重启mariadb:
    systemctl stop mariadb
    systemctl start mariadb
    重启后,mysql主库已经开启同步功能,创建了mysql-bin日志文件
  • 2.创建用于主从同步的账号
    create user 'username'@'%' identified by 'password';
  • 3.给与账号slave的权限
    grant replication slave on *.* to 'username'@'%';
  • 4.检查一下主库创建的账号信息
    select user,host from mysql.user;
  • 5.检查授权账号的权限信息
    show grants for username@'%';
  • 6.实现主库的锁表,防止数据写入,数据复制失败
    flush table with read lock;
  • 7.此时可以检查主库的日志状态,已经锁表了,防止日志位置发生变化
    show master status; 记录position
  • 8.开始数据备份,导出主库的已经存在数据,然后用于从库写入
    mysqldump -uroot -p --all-databases > /data/my_all.dump
  • 9.将主库的数据备份文件,scp到从库机器上,然后从库mysql导入数据
    scp /tmp/all.dump root@10.0.0.11:/opt/

从库的设置:

首先关闭从库的防护墙
systemctl stop firewalld
setenforce 0
iptables -F
然后改主机名:hostnamectl set-hostname slave
重启连接:Ctrl d Ctrl shift r
下载mariadb: yum install mariadb-server
启动mariadb:systemctl start mariadb

  • 10.在从库上导入主库的最新数据,以便于数据一致性
    • 1.登录slave数据库
    • 2.删除slave当前机器所有的database,清空database数据,为了保证从库干净
    • 3.登录数据库,导入数据source /opt/all.dump
  • 11.修改配置文件,添加用于同步的配置,和主库区别开
    • vi /etc/my.cnf 写入配置server-id=5
  • 12.重启mariadb 从库
  • 13.检查从库的各项参数
    show variables like 'server_id';
    show variables like 'log_bin';
    show variables like 'server_id';
  • 14.通过此命令,将slave库同于于master库
change master to master_host='10.0.0.10',
master_user='yonghu3',
master_password='123',
master_log_file='mysql-bin.000001',
master_log_pos=313;
  • 15.开启主从同步的开关
    start slave;
  • 16.检查复制的状态
    show slave status\G
  • 17.检查从库同步的两条参数,均为yes确认同步成功
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
  • 18.此时已经确认主从同步配置ok,前往主库解锁数据库,然后数据写入查看结果
    • master上:unlock tables; 解锁数据库
补充
  • mysql主从配置最好是读写分离
    • 主库写入数据(root)
    • 从库只能读取数据
      配置从库:
    • 不能用root去登录,可以通过root给这个普通用户授权,grant create,seltct, *******
    • 使用普通用户登录,在配置文件中添加 read-only=True (只对普通用户生效),达到一个从库只读效果

相关文章

网友评论

      本文标题:mysql+centos7+主从复制操作 2018-11-13

      本文链接:https://www.haomeiwen.com/subject/rnzkfqtx.html