mysql数据库主备同步部署

数据库主从同步部署

同步前主编

主数据master  ip:10.0.0.4:3306

备数据slave   ip:10.0.0.3:3306

主数据上面操作

开启主数据的binlog参数,和设置server-id

egrep "server-id|log-bin" /etc/my.cnf

########################################

[[email protected]_MYSQL ~]# egrep "server-id|log-bin" /etc/my.cnf

server-id       = 1

log-bin=mysql-bin

[[email protected]_MYSQL ~]#

重启3306实例数据库

/etc/init.d/mysqld restart

netstat -lntup|grep 3306

########################################

[[email protected]_MYSQL ~]# /etc/init.d/mysqld restart

Shutting down MySQL. SUCCESS!

Starting MySQL.. SUCCESS!

[[email protected]_MYSQL ~]# netstat -lntup|grep 3306

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      2412/mysqld

[[email protected]_MYSQL ~]#

########################################

查看是否记录bin_log日志

[[email protected]_MYSQL ~]# ll /application/mysql/data/

total 28700

-rw-rw----. 1 mysql mysql 18874368 Sep 30 21:58 ibdata1

-rw-rw----. 1 mysql mysql  5242880 Sep 30 21:58 ib_logfile0

-rw-rw----. 1 mysql mysql  5242880 Sep 30 21:33 ib_logfile1

-rw-r-----. 1 mysql root      3458 Sep 30 21:58 M_MYSQL.err

-rw-rw----. 1 mysql mysql        5 Sep 30 21:58 M_MYSQL.pid

drwx------. 2 mysql root      4096 Sep 30 21:33 mysql

-rw-rw----. 1 mysql mysql      107 Sep 30 21:58 mysql-bin.000001          ##有这个,证明在记录主从同步

-rw-rw----. 1 mysql mysql       19 Sep 30 21:58 mysql-bin.index

drwx------. 2 mysql mysql     4096 Sep 30 21:33 performance_schema

drwxr-xr-x. 2 mysql mysql     4096 Sep 30 21:33 test

[[email protected]_MYSQL ~]#

########################################

##在主数据中创建测试用的数据库和表。

create database lvnian;

use lvnian;

create table test(

id int(4) not null auto_increment,

name char(20) not null,

primary key(id)

);

flush privileges;

mysql -uroot -plvnian -e "use lvnian; select * from test;"

for n in `seq 100`;do mysql -uroot -plvnian -e "use lvnian;insert test values($n,‘lvnian$n‘); " ;done;

mysql -uroot -plvnian -e "use lvnian; select * from test;"

############################################

##############

查看是否开启binlog

[[email protected]_MYSQL ~]#  mysql -uroot -plvnian -e "show variables like ‘log_bin‘"

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

| Variable_name | Value |

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

| log_bin       | ON    |

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

[[email protected]_MYSQL ~]#

############################################

创建用于同步数据的账号rep

mysql> grant replication slave on *.* to ‘rep‘@‘10.0.0.%‘ identified by ‘lvnian123456‘;

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql -uroot -plvnian -e "select user,host from mysql.user;"

########################################

[[email protected]_MYSQL ~]#  mysql -uroot -plvnian -e "select user,host from mysql.user;"

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

| user | host      |

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

| rep  | 10.0.0.%  |

| root | 127.0.0.1 |

############################################

锁表

mysql> flush table with read lock;

Query OK, 0 rows affected (0.00 sec)

################################################################################

查看当前日志名称和位置

mysql -uroot -plvnian -e " show master status;"

mysql -uroot -plvnian -e "show master logs;"

########################################

[[email protected]_MYSQL ~]# mysql -uroot -plvnian -e " show master status;"

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000003 |      302 |              |                  |

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

[[email protected]_MYSQL ~]# mysql -uroot -plvnian -e "show master logs;"

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

| Log_name         | File_size |

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

| mysql-bin.000001 |     20802 |

| mysql-bin.000002 |       150 |

| mysql-bin.000003 |       302 |

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

[[email protected]_MYSQL ~]#

######################################

备份当前主数据数据

另开一个窗口

mysqldump -uroot  -plvnian -A -B -F --master-data=2 | gzip > /tmp/mysql_bak.$(date +%F).sql.gz

##################

[[email protected]_MYSQL ~]#  mysqldump -uroot  -plvnian -A -B -F --master-data=2 --events | gzip > /tmp/mysql_bak.$(date +%F).sql.gz

[[email protected]_MYSQL ~]# ll /tmp/

total 148

-rw-r--r--. 1 root  root  145225 Sep 30 22:19 mysql_bak.2015-09-30.sql.gz

[[email protected]_MYSQL ~]#

给主数据解锁

mysql> unlock tables;

Query OK, 0 rows affected (0.00 sec)

###############################################

继续往主数据写数据

for n in `seq 100 150`;do mysql -uroot -plvnian -e "use lvnian;insert test values($n,‘lvnian$n‘); " ;done;

mysql -uroot -plvnian -e "use lvnian; select * from test;"

############################################################################

############################################################################

############################################################################

############################################################################

启动备数据

/etc/init.d/mysqld restart

[[email protected]_MYSQL ~]# /etc/init.d/mysqld restart

Shutting down MySQL. SUCCESS!

Starting MySQL.. SUCCESS!

[[email protected]_MYSQL ~]# netstat -lntup|grep 3306

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      2475/mysqld

[[email protected]_MYSQL ~]#

#####################################################

把备份数据备份到备数据

scp [email protected]:/tmp/mysql_bak.2015-09-30.sql.gz .

#####################################

[[email protected]_MYSQL ~]# scp [email protected]:/tmp/mysql_bak.2015-09-30.sql.gz .

[email protected]‘s password:

mysql_bak.2015-09-30.sql.gz                                   100%  142KB 141.8KB/s   00:00

[[email protected]_MYSQL ~]# ls

anaconda-ks.cfg  aq  deng.txxt  install.log  install.log.syslog  mysql_bak.2015-09-30.sql.gz

[[email protected]_MYSQL ~]#

##########

[[email protected]_MYSQL ~]# gzip -d mysql_bak.2015-09-30.sql.gz

[[email protected]_MYSQL ~]# mysql -uroot -plvnian < mysql_bak.2015-09-30.sql

[[email protected]_MYSQL ~]# mysql -uroot -plvnian -e "show databases;"

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

| Database           |

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

| information_schema |

| lvnian             |

| mysql              |

| performance_schema |

| test               |

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

[[email protected]_MYSQL ~]# mysql -uroot -plvnian -e "use lvnian;select * from test;"

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

| id  | name      |

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

|   1 | lvnian1   |

|   2 | lvnian2   |

|   3 | lvnian3   |

|   4 | lvnian4   |

|   5 | lvnian5   |

|   6 | lvnian6   |

|   7 | lvnian7   |

|   8 | lvnian8   |

|   9 | lvnian9   |

|  10 | lvnian10  |

|  11 | lvnian11  |

|  12 | lvnian12  |

|  13 | lvnian13  |

....

....

....

全部恢复到备数据成功

###############################################

开始设置主从同步

###################################

更加主数据刚才的文件名称和位置点,等到下面的内容

CHANGE MASTER TO

MASTER_HOST=‘10.0.0.4‘,

MASTER_PORT=3306,

MASTER_USER=‘rep‘,

MASTER_PASSWORD=‘lvnian123456‘,

MASTER_LOG_FILE=‘mysql-bin.000003‘,

MASTER_LOG_POS=302;

######################

start slave;

show  slave status\G;

###################################

mysql> CHANGE MASTER TO

-> MASTER_HOST=‘10.0.0.4‘,

-> MASTER_PORT=3306,

-> MASTER_USER=‘rep‘,

-> MASTER_PASSWORD=‘lvnian123456‘,

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

-> MASTER_LOG_POS=302;

Query OK, 0 rows affected (0.08 sec)

mysql>

mysql> start slave;

Query OK, 0 rows affected (0.03 sec)

mysql> show  slave status\G;

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

Slave_IO_State: Waiting for master to send event

Master_Host: 10.0.0.4

Master_User: rep

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000004

Read_Master_Log_Pos: 9759

Relay_Log_File: S_MYSQL-relay-bin.000005

Relay_Log_Pos: 9905

Relay_Master_Log_File: mysql-bin.000004

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

Relay_Log_Space: 10106

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)

ERROR:

No query specified

mysql>

成功的表现:

[[email protected]_MYSQL ~]# mysql -uroot -plvnian -e "show  slave status\G;"|egrep "Slave_IO_Runnin|Slave_SQL_Running"

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

[[email protected]_MYSQL ~]#

出现上面两个yes证明数据库主从同步成功了

################################################################################

小结

注意防火墙问题

注意主从数据库的server-id问题,server-id必须是不同的。

注意主数据库的配置文件my.cnf 必须开启记录binlog日志

################################################################################

同步故障解决

mysql> show  slave status\G;

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

Slave_IO_State:

Master_Host: 10.0.0.4

Master_User: rep

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000003

Read_Master_Log_Pos: 302

Relay_Log_File: S_MYSQL-relay-bin.000001

Relay_Log_Pos: 4

Relay_Master_Log_File: mysql-bin.000003

Slave_IO_Running: No

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

Relay_Log_Space: 107

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

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 1593

Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

1 row in set (0.00 sec)

上面同步不成功的原因是。没有修改备数据的server-id .主备数据的server-id相同

时间: 2024-11-03 01:39:48

mysql数据库主备同步部署的相关文章

MYSQL数据库主主同步实战

MYSQL支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护日志文件的一个索引以跟踪日志循环.当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知下一次更新. 在实际项目中,两台分布于异地的主机上安装有MYSQL数据库,两台服务器互为主备,客户要求当其中一台机器出现故障时,另外一台能够接管服务器上的应用,这就需要两台

MySql数据库主主同步配置步骤

测试环境: 192.168.1.192 192.168.1.193 mysql5.2 配置192服务器: /usr/local/mysql/bin/mysql -uroot -p 授权: grant replication slave,file on *.* to 'xm1'@'192.168.1.193' identified by '100200'; 刷新: flush privileges; 配置193服务器: /usr/local/mysql/bin/mysql -uroot -p 授权

LVS+MYCAT+读写分离+MYSQL主备同步部署手册

LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1         编辑my.cnf文件… 2 1.2.2         重启数据库… 2 1.3       锁定主数据库DDL操作… 2 1.4       主备已有数据同步… 2 1.5       停止从服务… 3 1.6       配置备用数据库… 3 1.6.1         编辑my

【转载】LVS+MYCAT+读写分离+MYSQL主备同步部署手册(邢锋)

By leo | 2015/05/13 0 Comment LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1         编辑my.cnf文件… 2 1.2.2         重启数据库… 2 1.3       锁定主数据库DDL操作… 2 1.4       主备已有数据同步… 2 1.5       停止从服务… 3 1.6      

Mysql数据库主主互备

实验环境: 系统: Centos6.4 64 masterA:192.168.1.223 masterB:192.168.1.224 要求:实现两服务器之间数据的同步 首先做的事安装mysql,并能正常登陆 [[email protected] ~]# service mysqld restart Stopping mysqld:                                           [  OK  ] Starting mysqld:                

Centos Openldap服务器数据库主备(二)

二. Openldap服务器明文主备配置2.1 服务器架设Configure OpenLDAP Replication to continue Directory service if OpenLDAP master server would be down. OpenLDAP master server is called "Provider" and OpenLDAP Slave server is called "Consumer" on OpenLDAP.C

关于MySql数据库主键及索引的区别

一.什么是索引?索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录.表里面的记录数量越多,这个操作的代价就越高.如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置.如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍.  二.索引的类型MySQL提供多种索引类型供选择: 普通索引这是最基本的索引类型,而且它没

Mysql数据库主键,外键,索引概述

主键: 主键是数据表的唯一索引,比如学生表里有学号和姓名,姓名可能有重名的,但学号确是唯一的,你要从学生表中搜索一条纪录如查找一个人,就只能根据学号去查找,这才能找出唯一的一个,这就是主键;如:id int(10) not null primary key auto_increment :自增长的类型 : 外键: 定义数据表 假如某个电脑生产商,它的数据库中保存着整机和配件的产品信息.用来保存整机产品信息的表叫做 Pc:用来保存配件供货信息的表叫做Parts. 在Pc表中有一个字段,用来描述这款

LVS+MYCAT读写分离+MYSQL同步部署手册(第三版)

1      配置MYSQL主备同步 1.1    测试环境 mysql版本:5.6.24: 操作系统内核版本:Linux-3.13-0-32 主数据库IP:192.168.10.3: 主数据库名:db351353: 备用数据库IP:192.168.10.4: 备用数据库名:db351353. 1.2    配置主数据库 1.2.1   编辑my.cnf文件 #服务器唯一ID,一般取IP最后一段 server_id = 3 #启用二进制日志 log_bin=mysql_bin #需要备份的数据库