12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
ADADADADAD
mysql数据库 时间:2024-12-25 09:57:36
作者:文/会员上传
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
mysqlreplicaton环境:主:192.168.48.150 从:192.168.48.152简单的说,就是master把数据库的改变写入二进制日志,slave同步这些二进制日志,并根据这些二进制进行数据操作。mysqlRepl
以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。
mysqlreplicaton
环境:主:192.168.48.150
从:192.168.48.152
简单的说,就是master把数据库的改变写入二进制日志,slave同步这些二进制日志,并根据这些二进制进行数据操作。
mysqlReplicaton的用途
1.failover
2.backupserver
3.highperformance
master和slave上的数据是一样的,如果我们从master上进行写操作,slave上进行读操作,这就叫读写分离。
配置Replication
step1:
Slave是通过MYSQL连接登陆到Master上来读取二进制日志的。因此需要在Master上给Slave配置权限。
mysql>GRANTREPLICATIONSLAVEON*.*TO'repl'@'slaveip'IDENTIFIEDBY'replPass';
mysql>FLUSHPRIVILEGES;
eg:在Master上受权:
mysql>grantreplicationslaveon*.*torepl@192.168.48.152identifiedby'repl';
mysql>flushprivileges;
在slave上测试连接:
#mysql-h292.168.48.150-urepl-prepl
可以连上表示没有问题。
step2:
在Master上要打开二进制日志,并标识server-id。
server-id用于唯一标识主机,数字取值范围1-2**32-1.
#vi/etc/my.cnf
[mysqld]
log-bin
binlog-format=row
sync-binlog=1
server-id=1
#servicemysqldrestart
step3:
制作一个Master的完整备份,并且执行prepare。
#这里的原理是,将主要原有的数据备份打包到从上,从服务器直接还原,在这个基础之上再进行二进制传输同步,这样会节省资源。
我们使用innobackupex这个工具,这个工具可以记录备份数据的二进制编号,这样从服务器就会从备份的基础上再进行同步,也就是增量备份。
#innobackupex--user=dba--password=xxx/var/lib/backup/
#innobackupex--use-memory=500m--apply-log/var/lib/backup/2014-03_16-40-05/
eg:在master上的配置
#innobackupex安装:http://my.oschina.net/sansom/blog/160434
#mkdir/var/lib/backup/
#cd/var/lib/backup/
#innobackupex--user=root--password=123456/var/lib/backup/
#这样目录里会生成原始文件
#还要执行一步操作,就是生成innodb日志文件
#innobackupex--use-memory=500m--apply-log/var/lib/backup/原始文件名/
step4:
将备份拷贝至slave,并放入数据文件目录。
inmaster:
#yuminstallopenssh-clients-y(masterandslavebothneedtoinstall)
#scp-r/var/lib/backup/2016-03-11_10-26-10/192.168.48.152:/var/lib/backup/
inslave:
#servicemysqldstop
#mv/var/lib/backup/2016-03-11_07-40-35/*/var/lib/mysql/(生产环境中不要直接覆盖)
#ls(查看是否所有文件都被mv过去,如果没有,就再次复制过去)
#cd/var/lib/mysql/
#chown-Rmysql.*#拷贝过来的文件要改权限
#servicemysqldstart(这一步我的mysql启不来了,原因是没有关闭selinux)
#查看数据是否同步正确
step5:
在slave上配置server-id,标识服务器。
#vi/etc/my.cnf
[mysqld]
server-id=2
#servicemysqldrestart
step6:
查看并记录二进制日志中的positionID.(这个是innobackupex工具为我们生成的)
inslave:
#cd/var/lib/mysql
catxtrabackup_binlog_info
显示:mysqld-bin.000001341
positionid为341
step7:
配置slavereplication.
inslave:
mysql>changemastertomaster_host='192.168.48.150',
-->master_user='repl',
-->master_password='repl',
-->master_log_file='mysqld-bin.000001',
-->master_log_pos=341;
step8:
启动replication,并检查结果。
inslave:
mysql>startslave;
mysql>showslavestatus\G;
结果如下:
***************************1.row***************************
Slave_IO_State:Waitingformastertosendevent(当前无同步事件)
Master_Host:192.168.48.150(主ip)
Master_User:repl(主用户)
Master_Port:3306(端口)
Connect_Retry:60(重试时间/s)
Master_Log_File:mysqld-bin.000001(主同步二进制文件)
Read_Master_Log_Pos:341(主位置号)
Relay_Log_File:mysqld-relay-bin.000002(从二进制文件)
Relay_Log_Pos:252(从位置号)#主从的号虽然不一样,但是是有对应关系的,逻辑上是一样的。
Relay_Master_Log_File:mysqld-bin.000001
Slave_IO_Running:Yes(必须为yes时才正常)
Slave_SQL_Running:Yes(必须为yes时才正常)
#主会启运一个进程,从会启运两个进程,我们可以执行如下语句查看:
master_mysql>showprocesslist\G;
***************************1.row***************************
Id:11
User:repl
Host:192.168.48.152:54413
db:NULL
Command:BinlogDump
Time:707
State:Hassentallbinlogtoslave;waitingforbinlogtobeupdated
Info:NULL
***************************2.row***************************
slave_mysql>showprocesslist\G;
***************************2.row***************************
Id:3
User:systemuser
Host:
db:NULL
Command:Connect
Time:680
State:Waitingformastertosendevent
Info:NULL
***************************3.row***************************
Id:4
User:systemuser
Host:
db:NULL
Command:Connect
Time:680
State:Hasreadallrelaylog;waitingfortheslaveI/Othreadtoupdateit
Info:NULL
3rowsinset(0.00sec)
#从的两个进程,一个用于接收二进制,另一个用于解析二进制,执行语句。
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:341
Relay_Log_Space:408
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:
1rowinset(0.00sec)
这样就同步了,在主上操作的,从都会同步喽。
11-20
11-19
11-20
11-20
11-20
11-19
11-20
11-20
11-19
11-20
11-19
11-19
11-19
11-19
11-19
11-19