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

一、安装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 (只对普通用户生效),达到一个从库只读效果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容