Linux MySQL主从复制(数据同步)配置手册.docx_第1页
Linux MySQL主从复制(数据同步)配置手册.docx_第2页
Linux MySQL主从复制(数据同步)配置手册.docx_第3页
Linux MySQL主从复制(数据同步)配置手册.docx_第4页
Linux MySQL主从复制(数据同步)配置手册.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 配置主服务器(master)1.1 编辑数据库配置文件f,一般在/etc/目录下#vi /etc/f编辑文件内容如下:client#password= your_passwordport= 3306socket= /data/mysql/mysql.sockmysqldport= 3306socket= /data/mysql/mysql.sockskip-external-lockingkey_buffer_size = 16Mmax_allowed_packet = 1Mtable_open_cache = 64sort_buffer_size = 512Knet_buffer_length = 8Kread_buffer_size = 256Kread_rnd_buffer_size = 512Kmyisam_sort_buffer_size = 8Mcharacter_set_server=utf8collation-server=utf8_general_cilower_case_table_names=1character_set_client=utf8lower_case_table_names = 0max_connections=1000wait_timeout=31536000interactive_timeout=31536000log-bin=mysql-binbinlog_format=mixedserver-id= 1innodb_flush_log_at_trx_commit = 1sync_binlog = 1slave_skip_errors=all #过滤掉一些没啥大问题的错误mysqldumpquickmax_allowed_packet = 16Mmysqlno-auto-rehashmyisamchkkey_buffer_size = 20Msort_buffer_size = 20Mread_buffer = 2Mwrite_buffer = 2Mmysqlhotcopyinteractive-timeoutserver-id=1中的1可以任意定义,只要是唯一的就行。1.2 然后重启MySQL#service mysql restart1.3 登录MySQL服务器#mysql -uroot -p在主服务器新建一个用户赋予“REPLICATION SLAVE”的权限。你不需要再赋予其它的权限。在下面的命令,把替换为从服务器的IP。mysqlcreate user sync identified by sync; mysqlgrant replication slave on *.* to sync identified by sync;mysqlflush privileges;1.4 执行以下命令锁定数据库以防止写入数据mysqlFLUSH TABLES WITH READ LOCK;这时不要退出mysql命令行,因为退出命令行后,全局表锁就失效,新开一个窗口继续执行以下命令。1.5 导出数据库#mysqldump -u root -p123456 -all-databases /root/all.sql1.6 再次连接数据库进入mysql命令行查看master状态mysqlSHOW MASTER STATUS;请记下显示的信息,配置从服务器会用到。+-+-+-+-+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-+-+-+-+| mysql-bin.000003 | 1001741 | dbispconfig | mysql |+-+-+-+-+1 row in set (0.00 sec)1.7 解锁数据表mysqlUNLOCK TABLES;1.8 使用scp命令传输数据库文件all.sql到从服务器#scp /root/all.sql :/root2 配置从服务器(slave)登录从服务器。2.1 导入主服务器的数据库#mysql -u root -p123456 /root/all.sql2.2 编辑配置文件f,内容如下:client#password= your_passwordport= 3306socket= /data/mysql/mysql.sockmysqldport= 3306socket= /data/mysql/mysql.sockskip-external-lockingkey_buffer_size = 16Mmax_allowed_packet = 1Mtable_open_cache = 64sort_buffer_size = 512Knet_buffer_length = 8Kread_buffer_size = 256Kread_rnd_buffer_size = 512Kmyisam_sort_buffer_size = 8Mcharacter_set_server=utf8collation-server=utf8_general_cilower_case_table_names=1character_set_client=utf8lower_case_table_names = 0max_connections=1000interactive_timeout=31536000wait_timeout=31536000log-bin=mysql-binserver-id= 2binlog_format = mixedslave_skip_errors=all #过滤掉一些没啥大问题的错误#master-host = #master-user = #master-password = #master-port = mysqldumpquickmax_allowed_packet = 16Mmysqlno-auto-rehashmyisamchkkey_buffer_size = 20Msort_buffer_size = 20Mread_buffer = 2Mwrite_buffer = 2Mmysqlhotcopyinteractive-timeout2.3 保存文件并重启mysqld#service mysql restart2.4 登录mysql服务器,执行以下命令mysqlCHANGE MASTER TO MASTER_HOST=, MASTER_USER=sync,MASTER_PASSWORD=sync, MASTER_PORT=3306, MASTER_LOG_FILE=mysql-bin.000008, MASTER_LOG_POS=107, MASTER_CONNECT_RETRY=10;MASTER_HOST:主服务器的IP。MASTER_USER:配置主服务器时建立的用户名MASTER_PASSWORD:用户密码MASTER_PORT:主服务器mysql端口,如果未曾修改,默认即可。2.5 启动slave进程mysqlSTART SLAVE;2.6 查看mysql的日志查看mysql的日志,一般在/var/log/目录下,如果启动成功,你应该会看到类似下面的日志。091104 8:42:02 Note Slave I/O thread: connected to master rootX.X.X.X:3306?, replication started in log mysql-bin.000001? at position 98现在主服务器和从服务器已经配置好了。另外你可能需要设置主服务器的数据库二进制日志的过期时间,可以在配置文件中使用参数expire_logs_days来设定。3 检查是否正常运行3.1 主服务器在主服务器上执行SHOW MASTER STATUS,如果已经记录,Position应为非零。如果没有记录,确认正用log-bin和server-id选项运行主服务器。3.2 从服务器在从服务器上执行SHOWSHOW SLAVE STATUS,检查是否slave_IO_Running和slave_SQL_Running的值均为Yes。如果不是,验证当启动从服务器时使用的选项。3.3 连接如果从服务器正在运行,建立了与主服务器的连接吗?使用SHOW PROCESSLIST,找出I/O和SQL线程并检查它们的State列看它们如何显示。如果I/O线程状态为Connecting to master,验证主服务器上复制用户的权限、主服务器主机名、DNS设置,是否主服务器真正在运行,以及是否可以从从属服务器访问。4 需要注意的问题主服务器与从服务器的时区必须一致,否则mysql执行与时间相关的函数将会导致数据不一致。参考:/doc/refman/5.1/zh/replication.html给用户下权限:grantalloncos.*tocoslocalhostidentifiedbycos;grantalloncos.*tocos%identifiedbycos;grantallon*.*tocos%identifiedbycos;格式:grantallon数据库.*to用户%identifiedby密码;FLUSHPRIVILEGESFAQ1、Slave_SQL_Running: No同步问题解决方法检查数据库发现一台MySQLSlave未和主机同步,查看Slave状态:mysqlshowslavestatusG;Slave_IO_Running:YesSlave_SQL_Running:NoLast_Errno:1062.原因:可能是slave机器重起后事务回滚造成的,等等。解决办法一:A、停掉Slave服务:slavestopB、到主服务器上查看主机状态:记录File和Position对应的值。mysqlshowmasterstatus;+-+-+-+-+|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|+-+-+-+-+|mysql-bin.000013|330748356|+-+-+-+-+1rowinset(0.00sec)C、到slave服务器上执行手动同步:mysqlchangemastertomaster_log_file=mysql-bin.000013,master_log_pos=330748356;1rowinset(0.00sec)mysqlslavestart;1rowinset(0.00sec)再次查看slave状态发现:Slave_IO_Running:YesSlave_SQL_Running:Yes.Seconds_Behind_Master:0解决办法二:mysqlslavestop;mysqlsetGLOBALSQL_SLAVE_SKIP_COUNTER=1;mysqlslavestart;方法一是强制性从某一个点开始同步,会有部分没有同步的数据丢失,后续主服务器上删除记录同步也会有一些错误信息,不会影响使用.方法二不一定会有效果.解决办法三:(推荐)修改mys

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论