生产环境 MySQL主从复制(同步)

服务器信息

1、主服务器信息

[email protected]:~$ lsb_release -a

No LSB modules are available.

Distributor ID:  Ubuntu

Description:     Ubuntu 14.04.4 LTS

Release:   14.04

Codename:  trusty

[email protected]:~$ mysql -V

mysql  Ver 14.14 Distrib 5.5.50, for debian-linux-gnu (x86_64) using readline 6.3

[email protected]:~$ ip ro li

default via 192.168.119.1 dev eth0

192.168.119.0/24 dev eth0  proto kernel  scope linksrc 192.168.119.95

2、从服务器信息

[email protected]:~$ lsb_release -a

No LSB modules are available.

Distributor ID:  Ubuntu

Description:     Ubuntu 14.04.4 LTS

Release:   14.04

Codename:  trusty

[email protected]:~$ mysql -V

mysql  Ver 14.14 Distrib 5.5.47, for debian-linux-gnu (x86_64) using readline 6.3

[email protected]:~$ ip ro ls

default via 192.168.119.1 dev eth0

192.168.119.0/24 dev eth0  proto kernel  scope linksrc 192.168.119.137

MySQL主从复制示意图

Master主服务器配置

1、修改my.cnf配置文件

vi /etc/mysql/my.cnf

在[mysqld]中添加:

bind-address            = 192.168.119.137

server-id              = 1

log_bin                        = /var/log/mysql/mysql-bin.log

binlog_do_db           = include_database_name

binlog_ignore_db       = include_database_name

注:

server-id 服务器唯一标识;

log_bin 启动MySQL二进制日志;

binlog_do_db 指定记录二进制日志的数据库;

binlog_ignore_db 指定不记录二进制日志的数据库。

2、查看log_bin是否生效

[email protected]:~# mysql -uroot -p -e "show variables like ‘log_bin‘;"

Enter password:

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

| Variable_name | Value |

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

| log_bin       | ON    |

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

3、登陆主服务器MySQL创建从服务器用到的账户和权限

mysql> grant replication slave on *.* to ‘rep‘@‘192.168.119.137‘ identified by ‘ubuntu‘;

Query OK, 0 rows affected (0.01 sec)

mysql> grant replication slave on *.* to ‘masterbackup‘ @‘ 192.168.119.137‘ identified by ‘masterbackup‘;

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

4、重启mysql

[email protected]:~# /etc/init.d/mysql restart

5、主库上做备份

锁定数据库

mysql> flush table with read lock;

Query OK, 0 rows affected (0.01 sec)

mysql> show master status;

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000007 |      107 |              |                  |

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

1 row in set (0.01 sec)

mysql> show master logs;

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

| Log_name         | File_size |

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

| mysql-bin.000001 |       126 |

| mysql-bin.000002 |       126 |

| mysql-bin.000003 |       126 |

| mysql-bin.000004 |       126 |

| mysql-bin.000005 |       126 |

| mysql-bin.000006 |       126 |

| mysql-bin.000007 |       107 |

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

7 rows in set (0.00 sec)

mysql>

这个窗口保持不变,重新打开一个终端

[email protected]:~$ sudo su -

[sudo] password for solin:

[email protected]:~# mysqldump -uroot -p -A -B --events --master-data=2  >/opt/rep.sql

Enter password:

[email protected]:~# ls -l /opt/

总用量 4596

-rw-r--r-- 1 root root 4705979  9月  1 17:25 rep.sql

备份成功,回到刚才终端,解锁数据库

mysql> unlock tables;

Query OK, 0 rows affected (0.00 sec)

mysql> show master status;

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000007 |      107 |              |                  |

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

1 row in set (0.00 sec)

mysql> show master logs;

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

| Log_name         | File_size |

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

| mysql-bin.000001 |       126 |

| mysql-bin.000002 |       126 |

| mysql-bin.000003 |       126 |

| mysql-bin.000004 |       126 |

| mysql-bin.000005 |       126 |

| mysql-bin.000006 |       126 |

| mysql-bin.000007 |       107 |

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

7 rows in set (0.00 sec)

授权运程登陆

vi /etc/mysql/my.cnf

bind-address = 192.168.119.0

登陆MySQL数据库

grant all privileges on *.* to [email protected]"192.168.119.0" identified by "ubuntu" with grant option;

6、把主库的备份迁移到从库(从服务器可以远程连接)

[email protected]:~# mysql -uroot -h192.168.119.137 -p </opt/rep.sql

Slave服务器配置

1、修改my.cnf配置文件

vi /etc/mysql/my.cnf

bind-address = 0.0.0.0

server-id               = 2

2、授权数据库运程连接

登陆MySQL数据库

mysql> grant all privileges on *.* to [email protected]"%" identified by "ubuntu" with grant option;

Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

注:把主库的备份迁移到从库可以在此授权之后做

3、从库设置,登录Slave从服务器,连接Master主服务器:

mysql> CHANGE MASTER TO

-> MASTER_HOST=‘192.168.119.95‘,

-> MASTER_PORT=3306,

-> MASTER_USER=‘rep‘,

-> MASTER_PASSWORD=‘ubuntu‘,

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

-> MASTER_LOG_POS=107;

注:

master_host对应主服务器的IP地址:192.168.119.95;

master_port对应主服务器的端口: 3306;

master_log_file对应show master status显示的File列:mysql-bin.000007;

master_log_pos对应Position列:107

4、启动slave数据同步

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

查看Slave信息

1、show slave status\G

mysql> show slave status\G

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

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.119.95

Master_User: rep

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000008

Read_Master_Log_Pos: 107

Relay_Log_File: mysqld-relay-bin.000003

Relay_Log_Pos: 253

Relay_Master_Log_File: mysql-bin.000008

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

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: 107

Relay_Log_Space: 711

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)

注:Slave_IO_Running和Slave_SQL_Running都为yes才表示同步成功。

2、对比数据库,数据同步成功

Master MySQL

Slave MySQL

时间: 2024-10-09 04:49:57

生产环境 MySQL主从复制(同步)的相关文章

mysql生产环境____主从同步修复案例

一.   硬件环境 Master: Dell R720 Intel(R)Xeon(R) CPU E5-2640 v2 @ 2.00GHz MEM 64G.disk 4*2.5 SAS  网络4* 千兆 Slave: Dell R720 Intel(R)Xeon(R) CPU E5-2640 v2 @ 2.00GHz MEM 64G,disk 4*2.5 SAS  网络4* 千兆 二.   软件环境 系统软件: Master: cento5.8 Slave: cento5.8 数据库软件:mysq

mysql生产环境___主从同步修复案例

一.   硬件环境 Master: Dell R720 Intel(R)Xeon(R) CPU E5-2640 v2 @ 2.00GHz MEM 64G,disk 4*2.5 SAS  网络4* 千兆 Slave: Dell R720 Intel(R)Xeon(R) CPU E5-2640 v2 @ 2.00GHz MEM 64G,disk 4*2.5 SAS  网络4* 千兆 二.   软件环境 系统软件: Master: cento5.8 Slave: cento5.8 数据库软件:mysq

生产环境主从数据同步不了?

经历过程: 一般我们常常在做主从复制的时候,可能是很少遇到到错误,那都是因为,你做主从基本用的是,本地虚拟机做,或者一些测试环境做.但是当我们把主从复制部署到生成环境就出问题了,生成环境的mysql一般不允许重启mysql服务,除非你有特殊情况,否则你要小心哦.在我的公司里面,当我把整个主从复制部署到生成环境上,当我以为也是跟测试环境的部署一样简单,可是没有想到的是,当我部署完后,我查看一下从服务的slave状态,Slave_IO_Running,和Slave_SQL_Running已经都为ye

MySQL主从复制----同步与异步的配置

简单来讲MySQL的主从复制就是一个C/S架构的应用.master可以认为是我们通常意义上所认为的server,slave可以当作是一台client.slave上的I/O线程去请求master上数据,而master验证通过slave的信息后就允许slave接入,然后进行数据变化信息的发送. 一.MySQL主从复制原理 这里我以MySQL5.5为例来说一下MySQL的主从复制的原理: 首先由备节点的I/O线程负责向主节点请求数据,主节点验证通过以后会由dump线程把数据发送给备用节点.备用节点的I

[MySQL] 生产环境MySQL数据库事务一直在RUNNING

前言: 运营人员反映,有一单子提交卡住了,页面一直没有返回. 1,刚开始怀疑是应用服务器或者db压力过高hang住了,马上去check应用服务器以及db的负载,看起来都OK,蛮低的,应该不是DB性能问题. 2,最后去看下是否是表锁住了,查看到有2个事务一直RUNNING,没有结束., mysql> select * from INNODB_TRX\G;*************************** 1. row ***************************           

Python 生产环境Mysql数据库增量备份脚本

Mysql数据库常用的办法是通过mysqldump导出sql进行备份,但是不适合数据量很大的数据库,速度,锁表是两个严重的问题.前面写了一遍blog介绍xtrabackup的热备工具.下面的脚本是基于xtrabackup实现自动备份数据库的功能. 需求描述: 每天晚上23点,对数据库进行一次完整备份.第二天0-22点,每小时进行一次增量备份.每次备份前把上次的完整备份和23次增量备份移动到指定目录里,保留7天的数据. ps:不要问我,为什么是23点执行完整备份,0点不更好处理吗?bingo,这是

生产环境mysql快速备份工具XtraBackup使用案例

Mysql的备份有很多种方式,最常用的应该是mysqldump了,将数据库导出一个 sql文件,还原的时候source db.sql 就欢快的执行了.小伙伴愉快的布上一个shell脚本,配上cron,幸福的看着每天备份文件的生成,倍感安全.假如一个mysql超过了10G呢? 请相信我,导出的时间需要好几个小时,那还原呢,时间会更长.我曾经用sql还原一个6G的数据库,用了3个多小时. mysqldump这种逻辑备份的缺点就不多说了,说说xtrabackup,又是PERCONA,就冲这个名号,值得

生产环境mysql内存溢出重启简单分析

思路 1. 查看数据库日志 2. 查看慢查询 3. 查看系统日志 4. 查看监控 2017-01-03 03:03:48 0 170103 03:03:45 mysqld_safe Number of processes running now: 0 170103 03:03:45 mysqld_safe mysqld restarted   --异常重启 [Note] /usr/sbin/mysqld (mysqld 5.6.25-log) starting as process 104767

安装生产环境业务机使用的CentOS系统

安装生产环境业务机使用的CentOS系统 确保开启虚拟化.准备好网线,准备centos7.2系统(建议最小化镜像),进行如下操作: 1.CentOS系统的安装(以CentOS7.2为例) 1.1命名centos系统网卡名为"eth" 在centos7版本的系统,默认网卡名以"ens"开头,为了统一网卡名称,我们需要改为以"eth"开头 1.在开机界面,按下"Tab"键,输入"net.ifnames=0 biosdev