linux学习第五十五篇: MySQL主从介绍,准备工作,配置主,配置从,测试主从同步

MySQL主从介绍

MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的

MySQL主从是基于binlog的,主上须开启binlog才能进行主从。

主从过程大致有3个步骤 1)主将更改操作记录到binlog里 2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里 3)从根据relaylog里面的sql语句按顺序执行

主上有一个log dump线程,用来和从的I/O线程传递binlog

从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地

准备工作

准备两台机器,都安装mysql,详情看第三十五篇。安装后主从两台机器都启动

配置主

主上的IP:192.168.118.133

修改vim /etc/my.cnf 增加server-id=133和log_bin=xie1

修改完配置文件后,启动或者重启mysqld服务: /etc/init.d/mysqld restart 重启之后会出现两个新的文件,xie1.index和xie1.000001,index是索引文件,另一个是日志文件,这两个是实现主从的根本

把mysql库备份并恢复成xie库,作为测试数据 备份mysql库: mysqldump -uroot -p111111 mysql > /tmp/mysql.sql 创建数据库xie: mysql -uroot -p111111 -e “create database xie” 把备份数据恢复成xie库: mysql -uroot -p111111 xie < /tmp/mysql.sql

创建用作主从同步数据的用户,下面的IP 136是从的IP: grant replication slave on . to ‘repl’@’192.168.118.136’ identified by ‘111111’;·

把表锁住,不要再写入数据,暂时写到这: flush tables with read lock;

show master status; 这里的Position的数字下面的master_log_pos会用到

把主上的mysql中的库备份,到时候同步到从上

配置从

主上的IP:192.168.118.136

修改vim /etc/my.cnf 配置server-id=136,要求和主不一样,从上不用log_bin这个二进制日志文件

修改完配置文件后,启动或者重启mysqld服务 /etc/init.d/mysqld restart

把主上的备份的数据同步到从上,输入主上的root密码: scp 192.168.118.133:/tmp/*sql /tmp/

然后在从上数据库中创建对应的数据库,如上面我们同步过来的是zrlog和mysql,所以我们在在mysql中创建zrlog和mysql数据库。然后使用命令:mysql -uroot -p111111 zrlog < /tmp/zrlog.sql 把相关的数据库备份同步,要与主上的数据库一样,除了test和performance_schema数据库,因为这两个是默认的。

stop slave;

实现主从关键的一步: change master to master_host=’192.168.118.133’, master_user=’repl’, master_password=’111111’, master_log_file=’xie1.000001’, master_log_pos=658961;

start slave;

可以查看是否主从配置成功: show slave status\G; 查看下列两个是否都为YES: Slave_IO_Running: Yes Slave_SQL_Running: Yes 还需关注 Seconds_Behind_Master: 0 //为主从延迟的时间 Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error:

下列这些参数可以在主或者从上配置,在my.cnf里配置: 主服务器上 binlog-do-db= //仅同步指定的库 binlog-ignore-db= //忽略指定库 从服务器上 replicate_do_db= replicate_ignore_db= replicate_do_table= replicate_ignore_table= replicate_wild_do_table= //如aming.%, 支持通配符% replicate_wild_ignore_table=

还要到主上执行让表恢复写操作: unlock tables;

测试主从同步

进入主上数据库: mysql -uroot -p111111;

查看user表有几行: select count(*) from user;

清空user表: truncate table db;

到从上数据库中查看user表,会发现user表已同步清空: select count(*) from user;

主上继续删除user表: drop table user;

从上查看user表,发现没有了user表

有的遇到主从不能正常同步,提示uuid相同的错误。这是因为克隆机器导致。 https://www.2cto.com/database/201412/364479.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Danny的专栏

SQL Server 2008 附加数据库时出错

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

2.3K3
来自专栏龙首琴剑庐

数据库的事务作用及隔离级别

1、事务是什么? 实际的SQL执行过程中,有时候我们生产过程需要保证某些SQL要么一起并顺序执行成功,要么一起失败回滚,不做任何操作。那么就有了事务的概念。事务...

3026
来自专栏散尽浮华

Mysql主从同步(1)-主从/主主环境部署梳理

Mysql复制概念说明 Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一...

3505
来自专栏FreeBuf

电子商务系统ShopNC多个漏洞(可暴力 getshell)

前言 ShopNC是一款S是网城创想公司旗下服务于企业客户的电子商务系统,基于PHP5技术采用MVC 模式开发,本文介绍了shopnc多个漏洞结合,可getsh...

2967
来自专栏杨建荣的学习笔记

MySQL备份恢复第二篇(r5笔记第6天)

MySQL中的数据恢复功能相比Oracle来说还是要单薄一些,而Oracle中的数据恢复相对来说自动化的程度要高一些。不过Mysql的二进制日志提供的信息很丰富...

3575
来自专栏Laoqi's Linux运维专列

配置zabbix架构

4117
来自专栏散尽浮华

Oracle日常运维操作总结-数据库的启动和关闭

下面是工作中对Oracle日常管理操作的一些总结,都是一些基本的oracle操作和SQL语句写法,在此梳理成手册,希望能帮助到初学者(如有梳理不准确之处,希望指...

3115
来自专栏Linux运维学习之路

MySQL日志管理

MySQL日志管理 错误日志 配置方法: vim /etc/my.cnf [mysqld] log-error=/tmp/mysql.log 查看配置方式: s...

42612
来自专栏Java帮帮-微信公众号-技术文章全总结

Quartz数据库表分析【面试+工作】

共11张表,前6张都是关于各种triggers的信息,后面包括job,悲观锁,调度状态等信息;相关表操作在类StdJDBCDelegate中,相关sql语句在S...

1794
来自专栏IT探索

linux下bin安装mysql的问题

“mysqld_safe mysqld from pid file /usr/local/mysql/data/localhost.localdomain.pi...

652

扫码关注云+社区

领取腾讯云代金券