centos7 两台

master IP:192.168.1.146

slave  IP:192.168.1.147

1 下载mysql

下载后把安装包上传到服务器,也可以直接在服务器上用wget下载。

2 解压文件#解压文件[root@localhost root]# tar -xzvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz

#将解压后的文件名改名为mysql,并移至/usr/local/目录下

[root@localhost root]# mv mysql-5.7.23-linux-glibc2.12-x86_64 /usr/local/mysql

3 配置文件

(1)配置mysql启动文件

若系统中无/etc/my.cnf文件,则需要创建[root@localhost root]# touch /etc/my.cnf

[root@localhost root]# vim /etc/my.cnf

添加以下内容[mysql]

default-character-set=utf8

[mysqld]

default-storage-engine=INNODB

character_set_server=utf8

(2)复制mysql.server到/etc/init.d/目录下(目的想实现开机自动执行效果)[root@localhost root]# cd /usr/local/mysql/support-files/

[root@localhost support-files]# cp mysql.server /etc/init.d/mysql

(3)修改/etc/init.d/mysql参数[root@localhost support-files]# vim /etc/init.d/mysql

修改以下内容basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

(4)创建一个操作数据库的专门用户(出于安全)建立一个mysql的组

[root@localhost support-files]# groupadd mysql

建立mysql用户,并且把用户放到mysql组[root@localhost support-files]# useradd -r -g mysql mysql

为mysql用户设置密码[root@localhost support-files]# passwd mysql

给目录/usr/local/mysql 更改拥有者[root@localhost support-files]# chown -R mysql:mysql /usr/local/mysql/

4 安装初始化mysql[root@localhost support-files]# cd /usr/local/mysql/bin/

[root@localhost bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data

#注意:若报libaio错,则yum install -y libaio

#注意:若报无/usr/local/mysql/data目录,则需自行创建

#初始化后会生成一个临时密码 root@localhost::*(最好先记录这个临时密码)

给数据库加密[root@localhost bin]# ./mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data/

启动mysql

#启动mysql,如果mysqld进程异常终止,mysqld_safe将自动重启mysqld[root@localhost bin]# ./mysqld_safe --user=mysql &

#检查mysql是否启动[root@localhost bin]# ps -ef|grep mysql

#5 修改密码

#进入客户端[root@localhost bin]# ./mysql -uroot -p

Enter password:这里输入之前的临时密码

#修改密码

mysql> set password=password('新密码');

#6 设置远程访问

(1)打开mysql的默认端口3306

#设置3306为开放端口[root@localhost bin]# firewall-cmd --zone=public --add-port=3306/tcp --permanent

#重新加载防火墙[root@localhost bin]# firewall-cmd --reload

(2)设置mysql的远程访问

#设置远程访问账号,若最后加上with grant option,则同时可以赋予权限的权限mysql> grant all privileges on *.* to root@'%' identified by '密码';

#刷新

mysql> flush privileges;

设置远程访问参数说明grant [previleges] on [dbName].[tableName] to [userName]@[hostName] identified by "password";

previlege:授予的权限,有select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限,若all则表示赋予所有权限;

dbName:指定被访问的数据库名称,如果指定所有数据库可使用*星号;

tableName:指定被访问的数据表,如果指定某个数据库下的所有数据表可使用*星号;

userName:远程主机的登录用户名称;

hostName:远程主机名或者IP地址,%为所有主机均可登陆;

password:远程主机用户访问MySQL使用的密码。

7 设置开机自启动

(1)添加mysql服务[root@localhost bin]# chkconfig --add mysql

(2)设置mysql服务为自启动[root@localhost bin]# chkconfig mysql on

8 配置环境变量[root@localhost bin]# vim /etc/profile

在最后一行加入以下内容export PATH=/usr/local/mysql/bin:$PATH

使修改生效[root@localhost bin]# source /etc/profile

至此,mysql5.7在linux的安装则完成啦!!

mysql 主从复制配置

8 master主服务器的配置

8.1 配置文件my.cnf的修改[root@localhost mysql]# vim /etc/my.cnf

在[mysqld]中添加:

server-id=1

log_bin=master-bin

log_bin_index=master-bin.index

binlog_do_db=test

>备注:

>server-id 服务器唯一标识。

>log_bin 启动MySQL二进制日志,即数据同步语句,从数据库会一条一条的执行这些语句。

>binlog_do_db 指定记录二进制日志的数据库,即需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可。

>binlog_ignore_db 指定不记录二进制日志的数据库,即不需要复制的数据库名,如果有多个数据库,重复设置这个选项即可。

>其中需要注意的是,binlog_do_db和binlog_ignore_db为互斥选项,一般只需要一个即可。

8.2 创建从服务器的用户和权限

进入mysql数据库[root@localhost mysql]# mysql -uroot -p

Enter password:

#创建从数据库的masterbackup用户和权限

mysql> grant replication slave on *.* to masterbackup@'192.168.1.%' identified by '123456';

#备注

#192.168.1.%通配符,表示0-255的IP都可访问主服务器,正式环境请配置指定从服务器IP

#若将 192.168.1.% 改为 %,则任何ip均可作为其从数据库来访问主服务器

#退出mysql

mysql> exit;

8.3  重启mysql服务[root@localhost mysql]# service mysql restart

Shutting down MySQL.... SUCCESS!

Starting MySQL. SUCCESS!

8.4 查看主服务器状态#进入mysql数据库

[root@localhost mysql]# mysql -uroot -p

Enter password:

查看主服务器状态mysql> show master status;

+-------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+-------------------+----------+--------------+------------------+-------------------+

| master-bin.000001 | 154 | test | | |

+-------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

9 slave从服务器的配置

9.1 配置文件my.cnf的修改

编辑my.cnf文件[root@localhost mysql]# vim /etc/my.cnf

#在[mysqld]中添加:

server-id=2

relay-log=slave-relay-bin

relay-log-index=slave-relay-bin.index

#replicate-do-db=test

#备注:

#server-id 服务器唯一标识,如果有多个从服务器,每个服务器的server-id不能重复,跟IP一样是唯一标识,如果你没设置server-id或者设置为0,则从服务器不会连接到主服务器。

#relay-log 启动MySQL二进制日志,可以用来做数据备份和崩溃恢复,或主服务器挂掉了,将此从服务器作为其他从服务器的主服务器。

#replicate-do-db 指定同步的数据库,如果复制多个数据库,重复设置这个选项即可。若在master端不指定binlog-do-db,则在slave端可用replication-do-db来过滤。

#replicate-ignore-db 不需要同步的数据库,如果有多个数据库,重复设置这个选项即可。

#其中需要注意的是,replicate-do-db和replicate-ignore-db为互斥选项,一般只需要一个即可。

9.2 重启mysql服务[root@localhost mysql]# service mysql restart

Shutting down MySQL.... SUCCESS!

Starting MySQL. SUCCESS!

9.3 连接master主服务器

进入mysql数据库[root@localhost mysql]# mysql -uroot -p

Enter password:

连接master主服务器mysql> change master to master_host='192.168.1.146',master_port=3306,master_user='masterbackup',master_password='123456',master_log_file='master-bin.000001',master_log_pos=154;

#备注:

#master_host对应主服务器的IP地址。

#master_port对应主服务器的端口。

#master_log_file对应show master status显示的File列:master-bin.000001。

#master_log_pos对应show master status显示的Position列:154。

9.4 启动slave数据同步

启动slave数据同步mysql> start slave;

停止slave数据同步(若有需要)mysql> stop slave;

9.5 查看slave信息mysql> show slave status\G;

Slave_IO_Running和Slave_SQL_Running都为yes,则表示同步成功。

10 测试

在主服务器上登陆mysql,且进入test数据库,创建test表,且插入一条数据create table test(id int(11) AUTO_INCREMENT, primary key comment '主键ID',title varchar(50) not null comment '标题');

#插入一条数据

insert into test(id,title) values(null,'我是标题');

在从服务器上登陆mysql,且进入test数据库

发现数据已经同步;

#11 可能会遇到的错误:

若在主从同步的过程中,出现其中一条语句同步失败报错了,则后面的语句也肯定不能同步成功了。例如,主库有一条数据,而从库并没有这一条数据,然而,在主库执行了删除这一条数据的操作,那么从库没有这么一条数据就肯定删除不了,从而报错了。在此时的从数据库的数据同步就失败了,因此后面的同步语句就无法继续执行。

#####这里提供的以下几种方法:

方法一:该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况

解决:

stop slave;

#表示跳过一步错误,后面的数字可变

set global sql_slave_skip_counter =1;

start slave;

之后再用mysql> show slave status\G 查看:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

ok,现在主从同步状态正常了。。。

方式二:指定跳过错误代码,继续同步主键冲突、表已存在等错误代码如1062,1032,1060等,可以在mysql主配置文件指定略过此类异常并继续下条sql同步,这样也可以避免很多主从同步的异常中断

[mysqld]

slave-skip-errors = 1062,1032,1060

重新启动mysql

service mysqld restart

之后再用mysql> show slave status\G 查看:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

方式三:重新做主从,完全同步

该方法适用于主从库数据相差较大,或者要求数据完全统一的情况

解决步骤如下:

1.先进入主库,进行锁表,防止数据写入

使用命令:mysql> flush tables with read lock;

注意:该处是锁定为只读状态,语句不区分大小写

2.进行数据备份

把数据备份到mysql.bak.sql文件[root@server01 mysql]#mysqldump -uroot -p -hlocalhost > mysql.bak.sql

这里注意一点:数据库备份一定要定期进行,可以用shell脚本或者python脚本,都比较方便,确保数据万无一失

3.查看master 状态mysql> show master status;

+-------------------+----------+--------------+-------------------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+-------------------+----------+--------------+-------------------------------+

| mysqld-bin.000001 | 3260 | | mysql,test,information_schema |

+-------------------+----------+--------------+-------------------------------+

1 row in set (0.00 sec)

4.把mysql备份文件传到从库机器,进行数据恢复#使用scp命令

[root@server01 mysql]# scp mysql.bak.sql root@192.168.1.147:/tmp/

5.停止从库的状态mysql> stop slave;

6.然后到从库执行mysql命令,导入数据备份mysql> source /tmp/mysql.bak.sql

7.设置从库同步,注意该处的同步点,就是主库show master status信息里的| File| Position两项change master to master_host = '192.168.1.146', master_user = 'rsync', master_port=3306, master_password='', master_log_file = 'mysqld-bin.000001', master_log_pos=3260;

8.重新开启从同步mysql> stop slave;

9.查看同步状态mysql> show slave status\G 查看:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

一般在线增加从库有两种方式,一种是通过mysqldump备份主库,恢复到从库,mysqldump是逻辑备份,数据量大时,备份速度会很慢,锁表的时间也会很长。另一种是通过xtrabackup工具备份主库,恢复到从库,xtrabackup是物理备份,备份速度快,不锁表。为什么不锁表?因为自身会监控主库日志,如果有更新的数据,就会先写到一个文件中,然后再回归到备份文件中,从而保持数据一致性。

打赏

微信扫一扫,打赏作者吧~

centos7部署两个mysql_centos7 安装mysql5.7主从复制主写分离相关推荐

  1. CentOS7下源码编译安装MySQL5.6.4

    CentOS7下源码编译安装MySQL5.6.4 写这篇博客的主要原因是:请看上一篇博客:CentOS7下更改MySQL5.6.4默认的数据存储位置.对,当初通过rpm安装的mysql5.6.4,一切 ...

  2. Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案

    Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案 参考文章: (1)Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案 (2) ...

  3. Centos7下使用rpm包安装mysql5.6数据库

    Centos7下使用rpm包安装mysql5.6数据库 环境 [root@mysql01 ~]# uname -r 3.10.0-514.el7.x86_64 [root@mysql01 ~]# ca ...

  4. centos7 安装两个mysql_centos7安装运行多个mysql实例笔记

    centos7如何安装mysql5.7在前面一篇博客上已经记录了过程,整个过程编译下来几乎花了个吧小时.到92%的时候居然息屏注销了,虚拟机直接中断.中断了..但是好消息是居然可以继续编译,然后编译完 ...

  5. Centos7下配置安装mysql5.5主从复制(一主两从)

    1:安装mysql5.5数据库 规划: 主:server-1---10.64.5.167 从:server-2---10.64.5.170 从:server-3---10.64.5.172 数据目录: ...

  6. Centos7.4 版本环境下安装Mysql5.7操作记录

    Centos7.x版本下针对Mysql的安装和使用多少跟之前的Centos6之前版本有所不同的,废话就不多赘述了,下面介绍下在centos7.x环境里安装mysql5.7的几种方法: 一.yum方式安 ...

  7. centos7解压安装mysql_CentOS7 安装Mysql5.7 解压缩版

    1.环境 1.系统CentOS 7 2.数据库Mysql 5.7 2.准备工作 1.从MySQL官网上下载压缩包到本地 运行环境 CentOS 7 下载地址:https://dev.mysql.com ...

  8. centos7部署两个mysql_一文掌握mysql实用工具--pt-online-schema-change、innotop部署

    概述 因为OSC和innotop这两个需要的依赖包比较接近,所以这次就写一起了,下面介绍下完整的部署教程,以下基于centos7操作系统. 官网文档:http://dev.mysql.com/doc/ ...

  9. centos7编译安装mysql5.7_在Centos7源码包编译安装MySQL5.7

    1.通过国内镜像下载源码包 下载包含boost的源码包 wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-boost-5.7.23.tar.gz 2 ...

最新文章

  1. Consul与外部服务
  2. 怎么绕过论坛回复_铝散热片铆钉怎么压得快,有没有自动化设备
  3. 安全开发流程(SDL、微软)
  4. SpringBoot使用@Cacheable实现最简单的Redis缓存
  5. 弹出模态窗口,关闭并刷新页面
  6. PHP在线无人值守源码交易网站源码,集成支付宝微信接口
  7. Inception v2/v3原理与实现
  8. 在中國古代是沒有這種現象的
  9. SpringBoot常用注解之@Retryable
  10. 蜂鸣片,蜂鸣器的原理以及驱动电路的个人理解
  11. AWS、Azure等国外云计算如何迁移到国内阿里云上?
  12. CREO图文教程:三维设计案例之齿轮参数化设计(渐开线+拉伸+轴阵列)图文教程之详细攻略
  13. 绕过disable_functions,LD_PRELOAD hijack so file
  14. 【VBA】日期时间函数总结(全)
  15. Win7无线网络共享教程:解决所有问题
  16. 深信服安全运营工程师一面经验+二面经验
  17. 网络编程培训之六 使用原始套接字实现Ping
  18. C语言对于轴对称图形输出的分析
  19. keras模型转TensorFlow模型-tensorrt UFF格式
  20. webRTC(十二):webrtc 传输速率控制

热门文章

  1. idea 整合SSM(spring spring-mvc mybatis)
  2. dubbo请求调用过程分析
  3. 11G中自动收集统计信息
  4. Mikrotik RouterOS 日常问题解析 ROS 5.4下载
  5. 修改ActiveProcessLinks链表隐藏进程
  6. MVVM架构~knockoutjs实现简单的购物车
  7. 数学之美系列十七 -- 谈谈搜索引擎作弊问题(Search Engine Anti-SPAM)
  8. Oracle私房菜之安装Oracle 11g
  9. C 语言中赋值表达式的返回的逻辑值
  10. Linux操作系统下共享文件夹设置方法介绍