mysql主从同步linux,linux中部署mysql主从同步示例详解(绝对经典,看了必会)
准备两台服务器并安装MySQL5.7
master服务器
192.168.254.132
slave服务器
192.168.254.136
确保两台服务器安装的mysql版本一致,本测试使用的是mysql5.7,登录mysql数据库,使用如下命令查看mysql数据库版本
[root@localhost ~]# mysql -u root -p
Enter password:
mysql> show variables like '%version%';
master服务器配置流程
1、登录mysql数据库
[root@localhost ~]# mysql -u root -p
Enter password:
2、创建数据库,数据库名称为:TONGBU
mysql> create database TONGBU;
3、进入TONGBU数据库并创建表TB1
mysql> use TONGBU;
mysql> create table TB1(id varchar(60),name varchar(100));
4、修改配置/etc/my.cnf文件
修改的具体参数如下:
server-id=1
log-bin=mysql-bin
binlog-do-db=TONGBU
binlog-ignore-db=mysql
sync_binlog=1
binlog_checksum=none
binlog_format=mixed
提示
[mysqld] server-id=1 #数据库唯一ID,主从的标识号绝对不能重复。
log-bin=mysql-bin #开启bin-log,并指定文件目录和文件名前缀
binlog-do-db=liting #需要同步liting数据库。如果是多个同步库,就以此格式另写几行即可。如果不指明对某个具体库同步,就去掉此行,表示同步所有库(除了ignore忽略的库)。
binlog-ignore-db=mysql #不同步mysql系统数据库。如果是多个不同步库,就以此格式另写几行;也可以在一行,中间逗号隔开。
sync_binlog = 1 #确保binlog日志写入后与硬盘同步
binlog_checksum = none #跳过现有的采用checksum的事件,mysql5.6.5以后的版本中binlog_checksum=crc32,而低版本都是binlog_checksum=none
binlog_format = mixed #bin-log日志文件格式,设置为MIXED可以防止主键重复。
在主服务器上最重要的二进制日志设置是sync_binlog,这使得mysql在每次提交事务的时候把二进制日志的内容同步到磁盘上,即使服务器崩溃也会把事件写入日志中。
sync_binlog这个参数是对于MySQL系统来说是至关重要的,他不仅影响到Binlog对MySQL所带来的性能损耗,而且还影响到MySQL中数据的完整性。对于"sync_binlog"参数的各种设置的说明如下:
sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。
sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。
在MySQL中系统默认的设置是sync_binlog=0,也就是不做任何强制性的磁盘刷新指令,这时候的性能是最好的,但是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。而当设置为“1”的时候,是最安全但是性能损耗最大的设置。因为当设置为1的时候,即使系统Crash,也最多丢失binlog_cache中未完成的一个事务,对实际数据没有任何实质性影响。
从相关测试来看,对于高并发事务的系统来说,“sync_binlog”设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多。
5、重置mysql数据库
[root@hadoop4 ~]# systemctl restart mysqld.service
6、授权给slave查同步权限
mysql> grant replication slave on *.* to slave@192.168.254.136 identified by "123456";
注意,注意,注意:::
授权的用户:slave,不是从服务器的用户名,也不是从服务器中Mysql登录用的用户名,也是主服务器为从服务器自定义开户的一个可供从服务读(或者说是同步数据)数据用的一个用户名,可以自定义,但是要求从服务器在my.cnf配置文件中配置的master-user参数的名称一致,
如:master-user=slave #该名称为主服务器上可以进行同步的用户名,也是在此处授权的用户;
另外这一步容易出现一个异常,异常如下
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
原因是不满足密码设置的策略,这里需要两个命令来设置一下slave服务器mysql密码设置的策略
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
执行刷新数据库:
flush privileges;
7、授权成功后,查看主从状态
mysql> show master status;
8、查看二进制日志文件
[root@hadoop4 ~]# find / -name mysql-bin.000001
可以看到二进制日志文件在路径:/var/lib/mysql/mysql-bin.000001下
[root@hadoop4 ~]# ll /var/lib/mysql
9、备份要同步的数据库
1)、数据库备份语法
表结构+数据
mysqldump -u用户名 -p 数据库名 > 数据库名.sql
只导出表结构
mysqldump -u用户名 -p -d 数据库名 > 数据库名.sql如
示例:
#/usr/local/mysql/bin/mysqldump -uroot -p -d abc > abc.sql
执行备份命令前,一定要先到mysql的运行路径下,再执行一下命令,如果不知道可以通过find命令查询:
[root@hadoop4 ~]# find / -name mysqldump
本系统中mysql数据库导出目录如下:
/usr/bin/mysqldump
2)、执行数据库导出命令
[root@hadoop4 ~]# /usr/bin/mysqldump -uroot -p TONGBU > /usr/mytest/TONGBU.sql
10、把导出的数据库文件拷贝到slave(192.168.254.136)服务器上
[root@hadoop4 mytest]# src TONGBU.sql root@192.168.254.136:/usr/mytest/
slave(192.168.254.136)服务器上拷贝成功:
11、slave(192.168.254.136)数据库导入备份脚本
1)、数据库导入语法
使用 mysql 命令导入数据库格式如下:
mysql -u用户名 -p 数据库名 < 数据库名.sql
示例:
# mysql -uroot -p123456 < abc.sql
使用 source 命令导入
先登录到 mysql 中,并创建一个空的数据库:
mysql> create database abc; # 创建数据库
mysql> use abc; # 使用已创建的数据库
mysql> set names utf8; # 设置编码
mysql> source /home/abc/abc.sql # 导入备份数据库
2)、slave(192.168.254.136)数据库具体导入步骤
登录数据库,并创建数据库
[root@localhost mytest]# mysql -u root -p
mysql> create database TONGBU;
Query OK, 1 row affected (0.03 sec)
mysql> use TONGBU;
Database changed
mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)
执行导入命令如下:
[root@localhost mytest]# mysql -uroot -p TONGBU < /usr/mytest/TONGBU.sql
slave服务器配置流程
1、设置slave数据库的my.cnf配置文件
[root@localhost mytest]# vi /etc/my.cnf
具体配置:
[mysqld]
server-id=2
log-bin=mysql-bin-slave #从主机中可要可不要
replicate-do-db=TONGBU
replicate-ignore-db=mysql
slave-skip-errors = all
master-host=192.168.254.132 #指定主服务器IP地址
master-user=slave #指定定在主服务器上可以进行同步的用户名
master-password=123456 #密码
#master-port=3306
master-connect-retry=60 #断点重新连接时间
提示:
[mysqld]
server-id=2 #设置从服务器id,必须于主服务器不同
log-bin=mysql-bin #启动MySQ二进制日志系统
replicate-do-db=liting #需要同步的数据库名。如果不指明同步哪些库,就去掉这行,表示所有库的同步(除了ignore忽略的库)。
replicate-ignore-db=mysql #不同步test数据库
slave-skip-errors = all #跳过所有的错误,继续执行复制操作
当只针对某些库的某张表进行同步时,如下,只同步liting库的haha表和test库的heihei表:
replicate-do-db = liting
replicate-wild-do-table = liting.haha //当只同步几个或少数表时,可以这样设置。注意这要跟上面的库指定配合使用;
replicate-do-db = test
replicate-wild-do-table = test.heihei //如果同步的库的表比较多时,就不能这样一一指定了,就把这个选项配置去掉,直接根据指定的库进行同步。
重点
master-user=slave #指定定在主服务器上可以进行同步的用户名
master-password=123456 #密码
这两个配置要与主服务器上授权的用户名和密码一致,不到主从无法同步数据,一定要清楚这一点,也是主服务器和从服务器是否能同步的核心要点
mysql> grant replication slave on *.* to slave@192.168.254.136 identified by "123456";
2、设置启用授权用户
mysql>stop slave; #停止slave
mysql> change master to master_host='192.168.254.132',master_user='slave',master_password='123456';
mysql> start slave; #启动slave
3、查看配置状态是否成功
1)、从服务器配置状态查看如下
mysql> show slave statusG
2)、主服务器配置状态查看命令如下:
mysql> show processlist G
目前主服务器和从服务器的配置已经全部结束,下面我们进行测试
1、进入主服务器,登录mysql数据库
[root@localhost ~]# mysql -u root -p
Enter password:
2、进入TONGBU数据库,并在TB1表中添加一条数据
mysql> use TONGBU;
mysql> insert into TB1 values('10001','testname1');
3、查看主服务器中,TONGBU数据,TB1表中是否添加成功
mysql> select * from TB1;
4、进入从服务器,登录mysql数据库
[root@localhost ~]# mysql -u root -p
Enter password:
5、进入TONGBU数据库,并查询TB1表
mysql> select * from TB1;
可以看到,从服务器已经同步了主服务器的数据库信息,linux下部署mysql主从同步-成功!!!!
mysql主从同步linux,linux中部署mysql主从同步示例详解(绝对经典,看了必会)相关推荐
- linux管道命令详解,Linux系统中的管道命令的用法详解
Linux系统中管道命令是linux系统的一个强大之处.下面由学习啦小编为大家整理了Linux系统中的管道命令的用法详解的相关知识,希望对大家有帮助! Linux系统中的管道命令的用法详解 管道命令操 ...
- go语言字符串换行_Go语言中的字符串处理方法示例详解
1 概述 字符串,string,一串固定长度的字符连接起来的字符集合.Go语言的字符串是使用UTF-8编码的.UTF-8是Unicode的实现方式之一. Go语言原生支持字符串.使用双引号(" ...
- python bisect_Python中bisect的用法及示例详解
bisect是python内置模块,用于有序序列的插入和查找. 查找: bisect(array, item) 插入: insort(array,item) 查找 import bisect a = ...
- python中3or5什么意思_示例详解Python3 or Python2 两者之间的差异
每门编程语言在发布更新之后,主要版本之间都会发生很大的变化. 在本文中,Vinodh Kumar 通过示例解释了 Python 2 和 Python 3 之间的一些重大差异,以帮助说明语言的变化. 本 ...
- MySQL MHA高可用集群部署及故障切换(图文详解)
文章目录 MySQL MHA 一.MHA概念 1.MHA 的组成 2.MHA 的特点 二.搭建MySQL+MHA 实验思路 实验环境.安装包 1.所有服务器,关闭系统防火墙和安全机制 2.修改 mas ...
- linux重定向到某目录文件,linux shell中12 21 1file_path重定向语法详解
当初在shell中, 看到">&1"和">&2"始终不明白什么意思.经过在网上的搜索得以解惑.其实这是两种输出. 在 shell 程 ...
- linux中vi指令干嘛的,Linux系统中的vi/vim指令【详解】
vi是Unix世界里极为普遍的全屏幕文本编辑器,vim是它的改进版本Vi IMproved的简称.几乎可以说任何一台Unix机器都会提供这套软件. 只要简单的在Shell下执行vi就可以进入 vi 的 ...
- Linux系统中的文件系统格式区别及详解
Linux系统中常见文件系统格式 Windows常用的分区格式有三种,分别是FAT16.FAT32.NTFS格式 在Linux操作系统里有Ext2.Ext3.Linux swap和VFAT 种格式. ...
- Linux系统中的定时任务及延时任务详解
Linux系统中的定时任务及延时任务 1.系统延时任务 at 23:37/now+1min ##设定任务执行时间/延时1分钟 at> rm -fr /mnt/* ##任务动作 at> &l ...
- 五、linux总线中设备和驱动注册流程详解
一.注册流程图( 建议大家先看这张图3分钟. ) 由上图可以看出,linux中,有各种总线(bus),其中的平台总线(platform)是我们字符设备和驱动注册的地方.通过platform_devic ...
最新文章
- 【 FPGA 】FIR 滤波器之固定分数率重采样滤波器
- 关于vs2010编译程序一闪就没的解决办法
- 消息系统kafka原理解析
- Matlab和C++混合编程
- 反转一个值中的最后n位
- 中移M5310A NBIoT模组通信测试命令
- 写文章最难写的是标题
- 美团技术专家云鹏:写给工程师的十条精进原则!
- Ubuntu-16.04安装Xdebug-2.2.5及相关介绍
- 《Python核心编程》第二版第308页第十一章练习 续一 -Python核心编程答案-自己做的-...
- 数字频率系数测试软件,sia smaartlive7
- 基于单片机的智能窗帘系统设计(#0408)
- 计算机的优势和劣势_计算机专业毕业生考研还是就业应该怎么选?
- 三款EDA工具,AD、PADS与Allegro的简单介绍
- windows系统C盘pagefile.sys占用空间大怎么解决
- 清华刘知远团队巨作!Pre-trained Prompt Tuning框架,让超大模型调参变简单
- 拷贝漫画检索下载爬虫
- 浙大数据结构习题笔记:顺序表与单链表
- TopCoder入门教程(转载)
- 广东省计算机一级网络题分值,2018年一级计算机等级考试题型和分值