设为首页 收藏本站
查看: 690|回复: 0

[经验分享] MySQL数据库主从同步

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-10-8 08:34:21 | 显示全部楼层 |阅读模式

环境描述:

主数据库master  ip:192.168.1.205:3306

从数据库slave   ip:192.168.1.206:3306



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

配置步骤:

a.主数据库配置步骤

1、开启主数据库的binlog(二进制日志功能),并设置server-id

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

3、锁表并查看当前日志名称和位置(pos)

4、备份当前主数据库的全部数据(全备)

5、解锁主数据库,让主数据库继续提供服务

6、继续往主数据库写数据


b.从数据库配置步骤

1、把主数据库备份的全备数据恢复到从数据库

2、设置从数据库server-id,并确保这个ID没有被别的MySQL服务所使用。

3、在从数据库上设置主从同步的相关信息,如主数据库服务器的IP地址、端口号、同步账号、密码、binlog文件名、binlog位置(pos)点

4、开始主从同步start slave;

5、查看是否同步成功,show slavestatus\G;

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




主数据库配置:
##################################################################
开启主数据库的binlog(二进制日志功能),并设置server-id
[iyunv@web1 ~]# vi  /etc/my.cnf
server-id       = 1
log-bin=mysql-bin
[iyunv@web1 ~]# egrep "server-id|log-bin" /etc/my.cnf
server-id       = 1
log-bin=mysql-bin
##################################################################
重启数据库
[iyunv@web1 ~]# service mysqld restart
Shutting down MySQL.......... SUCCESS!
Starting MySQL.......... SUCCESS!
[iyunv@web1 ~]# netstat -tunlp|grep mysqld
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      16530/mysqld  
[iyunv@web1 ~]# lsof -i:3306
COMMAND   PID  USER  FD   TYPE DEVICE SIZE/OFF NODENAME
mysqld      16530 mysql 11u  IPv4  52627     0t0  TCP *:mysql (LISTEN)
##################################################################
查看是否记录二进制日志
[iyunv@web1 ~]# ll /application/data/mysql-bin.000001
-rw-rw----. 1 mysql mysql 2629 Oct  2 15:35 /application/data/mysql-bin.000001  #有此文件,证明在记录二进制日志
##################################################################
主数据库中创建测试用的数据库和表
mysql> create database test;
Query OK, 1 row affected (0.02 sec)
mysql> use test;
Database changed
mysql> create table test(id int(3),namechar(10));
Query OK, 0 rows affected (0.14 sec)
mysql> insert into test values(001,'mytest');
Query OK, 1 row affected (0.14 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)
##################################################################
查看是否开启binlog(二进制日志功能)
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin     | ON   |
+---------------+-------+
1 row in set (0.00 sec)
##################################################################  
创建用于同步数据的账号rep
mysql> grant replication slave on *.* to 'rep'@'192.168.1.%'identified by 'rep123456';
mysql> flush privileges;
mysql> select user,host from mysql.user;                 
+------+-------------+
| user | host      |
+------+-------------+
| root | 127.0.0.1   |
| rep  | 192.168.1.% |
| root | localhost   |
+------+-------------+
3 rows in set (0.04 sec)
##################################################################

锁表

mysql> flush table withread lock;

Query OK, 0 rows affected (0.00 sec)

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

查看当前二进制日志名称和位置(pos)

mysql> show master status;

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

| File         | Position | Binlog_Do_DB |Binlog_Ignore_DB |

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

| mysql-bin.000001 |    107 |         |             |

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

1 row in set (0.03 sec)

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

备份当前主数据库的数据

[iyunv@web1 ~]# mysqldump-uroot  -p87003891214 -A -B -F--master-data=2 --events | gzip > /tmp/mysql_bak.$(date +%F).sql.gz  

[iyunv@web1 ~]# ll /tmp

total 156

drwxrwxrwt. 2 tomcat tomcat   4096 Oct 2 09:33 hsperfdata_tomcat

-rw-r--r--. 1 root   root  151317 Oct  2 20:08mysql_bak.2015-10-02.sql.gz

-rwxrwxrwt. 1 root   root       0 Aug 13 11:55 yum.log

解锁主数据库

mysql> unlock tables;

Query OK, 0 rows affected (0.00 sec)

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


从数据库配置:
######################################################
把主数据库备份的全备数据恢复到从数据库

[iyunv@web1 ~]# scp /tmp/mysql_bak.2015-10-02.sql.gzroot@192.168.1.206:~
root@192.168.1.206's password:
mysql_bak.2015-10-02.sq 100% 148KB 147.8KB/s   00:00
[iyunv@web2 ~]# ll mysql_bak.2015-10-02.sql.gz
-rw-r--r--. 1 root root 151317 Aug 19 07:37 mysql_bak.2015-10-02.sql.gz
[iyunv@web2 ~]# gzip -d mysql_bak.2015-10-02.sql.gz
[iyunv@web2 ~]# mysql -uroot -p87003891214 < mysql_bak.2015-10-02.sql
[iyunv@web2 ~]# mysql -uroot -p87003891214 -e "showdatabases;"
+--------------------+
| Database        |
+--------------------+
| information_schema |
| mysql         |
| performance_schema |
| test          |
+--------------------+
[iyunv@web2 ~]# mysql -uroot -p87003891214 -e "usetest;select * from test;"        
+------+--------+
| id   | name  |
+------+--------+
|    1 | mytest|
+------+--------+
###############################################################
设置从数据库server-id,并确保这个ID没有被别的MySQL服务所使用
[iyunv@web2 ~]# vi /etc/my.cnf
server-id       = 2
[iyunv@web2 ~]# grep "server-id" /etc/my.cnf
server-id       = 2
##############################################################
在从数据库上设置主从同步的相关信息,如主数据库服务器的IP地址、端口号、同步账号、密码、binlog文件名、binlog位置(pos)点
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.1.205',
MASTER_PORT=3306,
MASTER_USER='rep',
MASTER_PASSWORD='rep123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
#############################################################
开始主从同步start slave;
mysql> start slave;
查看是否同步成功,show slave status\G;
mysql> show  slavestatus\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting formaster to send event
Master_Host: 192.168.1.205
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File:mysql-bin.000008
Read_Master_Log_Pos: 107
Relay_Log_File:web2-relay-bin.000014
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: 451
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.01 sec)

ERROR:
No query specified
其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,代表主从同步成功了。
#############################################################
继续往test表中插入数据
mysql> use test;
Database changed
mysql> insert into test values(002,'mytest2');
Query OK, 1 row affected (0.01 sec)

mysql> insert into test values(003,'mytest3');
Query OK, 1 row affected (0.05 sec)

mysql> insert into test values(004,'mytest4');
Query OK, 1 row affected (0.04 sec)

查看从数据库的表

mysql> use test;
Database changed
mysql> select * from test;
+------+---------+
| id   | name   |
+------+---------+
|    1 | mytest |
|    2 | mytest2 |
|    3 | mytest3 |
|    4 | mytest4 |
+------+---------+
4 rows in set (0.00 sec)



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-124102-1-1.html 上篇帖子: 快速部署mysql高可用方案:heartbeat + drbd + mysql 下篇帖子: MySQL的日志原理 master 数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表