mysql数据库主从同步(交互式)

mysql数据库主从同步交互式配置步骤,本文以一台mysql数据库多实例3306和3307为例进行配置,3306为主库,3307为从库(多台单实例与一台多实例配置是一样的)

一.my.cnf文件配置

1.修改my.cnf配置文件,主数据库3306要打开log-bin,server-id不能一样

[[email protected] ~]# egrep"log-bin|server-id" /data/{3306,3307}/my.cnf

/data/3306/my.cnf:log-bin=/data/3306/mysql-bin

/data/3306/my.cnf:server-id=1

/data/3307/my.cnf:#log-bin=/data/3307/mysql-bin

/data/3307/my.cnf:server-id=3

2.重启数据库3306和3307

[[email protected] ~]#/data/3306/mysql stop

[[email protected] ~]#/data/3306/mysql start

[[email protected] ~]#/data/3307/mysql stop

[[email protected] ~]#/data/3307/mysql start

3.进入主数据库3306,查询log_bin是否打开,server_id是多少

[[email protected] ~]# mysql -uroot-p123456 -S /data/3306/mysql.sock

mysql> show variables like"log_bin";

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

| Variable_name | Value |

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

| log_bin       | ON   |

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

1 row in set (0.01 sec)

mysql> show variables like"server_id";

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

| Variable_name | Value |

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

| server_id     | 1    |

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

1 row in set (0.00 sec)

4.创建一个专门用来同步数据库的用户

mysql> grant replicationslave on *.* to [email protected]‘10.0.0.%‘ identified by ‘123456‘;

###*.*代表所有库和所有表

mysql> flush privileges;

mysql> select user,hostmysql.user;

mysql> show grants [email protected]‘10.0.0.%‘;

二.主库3306备份

mysql> flush table with readlock;          //锁表,这时为只读,不能写,此时mysql窗口不能退出,退出则锁表会失败,超出默认的锁表时间会自动解锁

mysql> show variables like‘timeout%‘;       //查看默认的锁表时间

mysql> show master status;             //查看binlog位置

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

| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB       |

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

| mysql-bin.000004   |     328|              |                   |

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

1 row in set (0.00 sec)

[[email protected] ~]# mysqldump-uroot -p123456 -S /data/3306/mysql.sock -A -B|gzip >/opt/bak_$(date+%F).sql.gz     //从新打开一个CRT窗口,进行备份

[[email protected] ~]# ls /opt

bak_2017-06-28.sql.gz

mysql> show master status;     //备份数据后,再次查看binlog位置,确认这期间没有新数据写入

mysql> unlock tables;                       //解锁

三.把主库3306备份出来的数据还原到从库3307

1.登陆3307,确认logbin是关闭状态,server id与3306不冲突

[[email protected] ~]# mysql -uroot-p123456 -S /data/3307/mysql.sock

mysql> show variables like"log_bin";

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

| Variable_name | Value |

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

| log_bin       | OFF |

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

1 row in set (0.01 sec)

mysql> show variables like"server_id";

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

| Variable_name | Value |

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

| server_id     | 3    |

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

1 row in set (0.00 sec)

2.将3306备份的数据还原到3307上

[[email protected] ~]# cd /opt

[[email protected] opt]# ls

bak_2017-06-28.sql.gz

[[email protected] opt]# gzip -dbak_2017-06-28.sql.gz

[[email protected] opt]# ls

bak_2017-06-28.sql

[[email protected] opt]# mysql -uroot-p123456 -S /data/3307/mysql.sock <bak_2017-06-28.sql

3.登陆3307,执行以下命令,连接主库3306

[[email protected] opt]# mysql -uroot-p123456 -S /data/3307/mysql.sock

mysql> CHANGE MASTER TO

-> MASTER_HOST=‘10.0.0.20‘,

-> MASTER_PORT=3306,

-> MASTER_USER=‘rep‘,

-> MASTER_PASSWORD=‘123456‘,

-> MASTER_LOG_FILE=‘mysql-bin.000004‘,

-> MASTER_LOG_POS=328;

mysql> start slave;               //从库3307开启主从复制开关

mysql> show slave status\G       //检查同步状态

*************************** 1.row ***************************

Slave_IO_State: Waiting formaster to send event

Master_Host: 10.0.0.20

Master_User: rep

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000004

Read_Master_Log_Pos: 328

Relay_Log_File: relay-bin.000002

Relay_Log_Pos: 253

Relay_Master_Log_File: mysql-bin.000004

Slave_IO_Running:Yes    //确认这两条是yes状态

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB: mysql

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 328

Relay_Log_Space: 403

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0     //复制过程中从库比主库延迟的秒数

Master_SSL_Verify_Server_Cert:No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

1 row in set (0.00 sec)

或者这样检查同步状态

[[email protected] ~]# mysql -uroot-p123456 -S /data/3307/mysql.sock  -e"show slave status\G"|egrep -i "running|_behind"     //-e的作用是不需要登陆mysql交互敲入命令

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Seconds_Behind_Master: 0

查看线程状态

[[email protected] ~]# mysql -uroot -p123456 -S/data/3307/mysql.sock -e "show processlist\G"

[[email protected] ~]# mysql -uroot -p123456 -S/data/3306/mysql.sock -e "show processl

四.测试

在主库3306上创建数据库,然后再登陆3307查看是否正常同步,经测试已正常同步^_^

原文地址:https://www.cnblogs.com/mynale/p/11018507.html

时间: 2024-08-08 03:29:17

mysql数据库主从同步(交互式)的相关文章

mysql数据库主从同步

环境: Mater:   CentOS7.1  5.5.52-MariaDB  192.168.108.133 Slave:   CentOS7.1  5.5.52-MariaDB  192.168.108.140 1.导出主服务数据,将主备初始数据同步 master: //从master上导出需要同步的数据库信息 mysqldump -u*** -p*** --database test > test.sql //将master上的备份信息传输到slave上 scp /root/test.sq

linux下mysql数据库主从同步配置

说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备篇: 说明:在两台MySQL服务器192.168.21.128和192.168.21.129上分别进行如下操作 备注: 作为主从服务器的MySQL版本建议使用同一版本! 或者必须保证主服务器的MySQL版本要高于从服务器的MySQL版本! 一.配置好IP.DNS .网关,确保使用远程连接工具能够连接

mysql数据库主从同步配置教程--数据库同步

背景: 最近有一个mysql数据库同步的需求,我用了mysql主从同步的方法来实现.下面把步骤记录一下. 环境和拓扑 操作系统:Centos6.6 X64 mysql版本:5.1.73 Master: 10.6.1.210 Slave:  10.6.1.211 需求: 实现Master上test库同步到Slave上,但是禁止同步该库下的AA表 1.配置Master上的my.cnf #vim  /etc/my.cnf 添加内容到[mysqld]下,设定只同步test 数据库: [mysqld] l

谈谈Mysql数据库主从同步延迟分析及解决方案

一.MySQL的数据库主从复制原理 MySQL主从复制实际上基于二进制日志,原理可以用一张图来表示: 分为四步走: 1. 主库对所有DDL和DML产生的日志写进binlog: 2. 主库生成一个 log dump 线程,用来给从库I/O线程读取binlog: 3. 从库的I/O Thread去请求主库的binlog,并将得到的binlog日志写到relay log文件中: 4. 从库的SQL Thread会读取relay log文件中的日志解析成具体操作,将主库的DDL和DML操作事件重放. 关

MySQL数据库主从同步部署

MySQL数据库主从同步部署: 环境 Mater:   CentOS6.4  mysql5.5.38  192.168.107.133 Slave:   CentOS6.4  mysql5.5.38  192.168.107.135 1.导出主服务数据,将主备初始数据同步 master: //从master上导出需要同步的数据库信息 mysqldump -u*** -p*** --database test > test.sql //将master上的备份信息传输到slave上 scp /roo

【转】MySQL数据库主从同步管理

MYSQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的管理也就显得非常重要,新手往往在出现主从同步错误的时候不知道如何入手,这篇文章就是根据自己的经验来详细叙述mysql主从的管理. MYSQL主从同步的作用 (1) 数据分布 (2) 负载平衡(load balancing) (3) 备份 (4) 高可用性(high availability)和容错 MYSQL主从同步的原理 关于MYSQL的主从同步,最主要的是要了解MYSQL的主从同步是如何工作的也即

Mysql数据库主从同步(复制)热备份

随着大数据的发展,数据的安全问题日益凸显,往常不被重视的数据库维护变得必不可缺,数据的灾备变成个各大企业/个人站长业务运行中必须重视的环节.上一篇文章提到了自动化备份避灾的几种方案及选择,今天就来实践一下主从/双向异地热备份方案. Mysql数据库同步(复制)的概念,主从同步使得数据可以从一个服务器无缝迁移复制到另一台服务器.这个过程中一台服务器充当主服务器(master),另一台或另外多台充当从服务器(slave).复制进程I/O是异步进行的,所以服务器不需要一直保持关联的状态. Mysql数

MariaDB、MySQL数据库主从同步

1.Mysql主从同步异步概念 异步:主服务器写完日志后立即返回同步完成消息,不受从服务器的状态和影响,mysql默认为异步工作模式 同步:主服务器写入数据到本地磁盘并记录好二进制日志,然后等从服务器发现数据发送改变再把数据同步到从服务器的日志中继并保存到二进制日志和磁盘,最后返回给主服务器同步完成的结果,因此比较影响性能. 2.同步过程: 主 服务器在可能修改数据时会把行内容记录在二进制日志中,而从服务会不停到主服务器请求数据,相当于mysql客户端,不停请求服务器的3306端口,从服 务器请

MySQL数据库主从同步配置

Mysql主从安装配置 环境: 主从服务器上的MySQL数据库版本同为5.1.34 主机IP:192.168.0.1 从机IP:192.168.0.2 一. MySQL主服务器配置 1.编辑配置文件/etc/my.cnf # 确保有如下行 server-id = 1 log-bin=mysql-bin binlog-do-db=mysql  #需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可 binlog-ignore-db=mysql  #不需要备份的数据库名,如果备份多个数据库,