飘飘悠悠 发表于 2015-1-16 22:15:11

MYSQL网站制作之Mysql 主从数据库同步

为维持生产环境和非生产环境需要不断地投入管理支持费用MySQL学习教程,最终导致客户为数据库资源投入巨额成本。情况:
主服务器:centos5.2mysql5.1.35源码IP:192.168.1.22
从服务器:centos5.2mysql5.1.35源码IP:192.168.1.33
设置:
1、主服务器
1.1、创立一个复制用户,具有replicationslave权限。
mysql>grantreplicationslaveon*.*to‘repl’@’192.168.1.22′identifiedby‘repl’;
1.2、编纂my.cnf文件
vi/etc/my.cnf
增加
server-id=1
并开启log-bin二进制日记文件
log-bin=mysql-bin
注:必要把默许的server-id=1往失落
1.3、启动mysql数据库
mysqld_safe–user=mysql&
1.4、设置读锁
mysql>flushtableswithreadlock;
1.5、失掉binlog日记文件名和偏移量
mysql>showmasterstatus;
+——————+———-+————–+——————+
FilePositionBinlog_Do_DBBinlog_Ignore_DB
+——————+———-+————–+——————+
mysql-bin.0000010106
+——————+———-+————–+——————+
1.6、备份要同步的数据库
mysqldumptest>test.sql
1.7、解锁
mysql>unlocktables;
2、从服务器
2.1、编纂my.cnf文件
vi/etc/my.cnf
增加
server-id=2
注:必要把默许的server-id=1往失落
2.2、启动从数据库
mysqld_safe–user=mysql&
2.3、对从数据库举行响应设置
mysql>changemasterto
->master_host=’192.168.1.22′
->master_user=’repl’
->master_password=’repl’
->master_log_file=’mysql-bin.0000010′
->master_log_pos=106;
2.4、启动从服务器slave线程
mysql>startslave;
实行showprocesslist命令显现以下历程:
mysql>showprocesslistG
***************************2.row***************************
Id:2
User:systemuser
Host:
db:NULL
Command:Connect
Time:2579
State:Hasreadallrelaylog;waitingfortheslaveI/Othreadtoupdateit
Info:NULL暗示slave已毗连上master,入手下手承受并实行日记
2.5、检察slave线程形态
mysql>showslavestatus;
***************************1.row***************************
Slave_IO_State:Waitingformastertosendevent
Master_Host:192.168.1.22
Master_User:repl
Master_Port:3306
Connect_Retry:60
Master_Log_File:mysql-bin.0000010
Read_Master_Log_Pos:106
Relay_Log_File:centos-relay-bin.000002
Relay_Log_Pos:529
Relay_Master_Log_File:mysql-bin.0000010
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:106
Relay_Log_Space:830
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)
考证是不是设置准确
在从服务器上实行
showslavestatusG;
Waitingformastertosendevent
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
如以上二行同时为Yes申明设置乐成
测试
1、在主服务器test数据库中创立user表
mysql>usetest;
mysql>createtableuser(idint);
2、在从服务器中检察user表
mysql>usetest;
mysql>showtableslike‘user’;
+———————-+
Tables_in_test(user)
+———————-+
user
+———————-+
1rowinset(0.00sec)
申明主从数据同步乐成。
成绩?
1.在从数据库中检察slave形态时呈现
TheslaveI/OthreadstopsbecausemasterandslavehaveequalMySQLserverids;theseidsmustbedifferentforreplicationtowork(orthe–replicate-same-server-idoptionmustbeusedonslavebutthisdoesnotalwaysmakesense;pleasecheckthemanualbeforeusingit)
申明方从服务器里my.cnf中的server-id有不异的。
办理举措:
修正my.cnf里的server-id,偏重启数据库服务。my.cnf文件默许有server-id=1
别的申明
主服务器my.cnf
#binlog-do-db=必要备份的数据库名,可写多行
#binlog-ignore-db=不必要备份的数据库名,可写多行
从服务器my.cnf
#replicate-do-db=test必要备份的数据库名
#replicate-ignore-db=mysql疏忽的数据库
#master-connect-retry=60假如从服务器发明主服务器断失落,从头毗连的工夫差(秒)
以下设置也可间接修正my.cnf设置文件
log-bin=mysql-bin
master-host=192.168.1.22
master-user=repl
master-password=repl
master-port=3306
主从服务器同步保护
因为各类缘故原由,招致主从数据纷歧致,在负载低的时分,举行手动同步.
在主服务器上实行
mysql>flushtableswithreadlock;
QueryOK,rowsaffected(0.01sec)
mysql>showmasterstatus;
+——————+———-+————–+——————+
FilePositionBinlog_Do_DBBinlog_Ignore_DB
+——————+———-+————–+——————+
mysql-bin.0000011260
+——————+———-+————–+——————+
在从服务器上实行
先失掉以后主服务器的二进制文件名和偏移量,实行命令使从服务器与主服务器同步
mysql>selectmaster_pos_wait(‘mysql-bin.0000011′,’260′);
+————————————————–+
master_pos_wait(‘mysql-bin.0000011′,’260′)
+————————————————–+
0
+————————————————–+
1rowinset(0.01sec)
同步完成后,在主服务器上实行解锁
mysql>unlocktables;
切换主从服务器
当主服务器呈现妨碍时,可将从服务器当主服务器来利用.步骤以下:
1、包管一切从数据库都已实行了relaylog中的全体更新,在从服务器中实行
stopslaveio_thread,用showprocesslist反省,检察形态是不是是Hasreadallrelaylog,暗示更新完成.
mysql>stopslaveio_thread;
QueryOK,0affected(0.00sec)
mysql>showprocesslistG;
***************************2.row***************************
Id:2
User:systemuser
Host:
db:NULL
Command:Connect
Time:4757
State:Hasreadallrelaylog;waitingfortheslaveI/Othreadtoupdateit
Info:NULL
2、在从服务器上实行stopslave,resetmaster命令,重置成主数据库
mysql>stopslave;
QueryOK,0affected(0.00sec)
mysql>resetmaster;
QueryOK,0affected(0.00sec)
3、删除新的主服务器数据库目次中的master.info和relay-log.info文件,不然下次重启时还会依照从服务器来启动.
<Pstyle="TEXT-INDENT:2em">
与其他数据库相比,MySQL易学易用。

只想知道 发表于 2015-1-19 06:02:52

你可以简单地认为适合的就是好,不适合就是不好。

柔情似水 发表于 2015-1-26 20:23:58

原来公司用过MYSQL自己也只是建个表写个SQL

再现理想 发表于 2015-2-4 21:11:41

索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。

再见西城 发表于 2015-2-10 11:11:27

对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。

飘灵儿 发表于 2015-3-1 10:32:02

我个人认为就是孜孜不懈的学习

因胸联盟 发表于 2015-3-10 16:31:06

对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。

精灵巫婆 发表于 2015-3-17 09:08:57

这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。

爱飞 发表于 2015-3-24 04:58:49

从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
页: [1]
查看完整版本: MYSQL网站制作之Mysql 主从数据库同步