Mysql主从复制与读写分离(已成功)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux(Ubuntu)环境MYSQL->Master/Slave主从同步设置以及注意事项

主库(192.168.120) Ubuntu 10.10 Server Mysql version: 5.1.49-1ubuntu8.1-log

备库(192.168.121) Ubuntu 10.10 Server Mysql version: 5.1.49-1ubuntu8.1-log

由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,Master的版本肯定不能高于Slave版本。=======================主库(192.168.120)======================================

1、修改f

r oger@ubuntu:~#vim /etc/f

禁掉bind-address此项

[mysqld]

server-id = 1

log-bin=mysql-bin

binlog_format=mixed (保持主从库的日志格式一致,如果不一致可能会不成功)

注:

a、下面两个选项可以制定生成binlog和忽略的库,如果要同步所有数据库则下面两行不要不用写

b、binlog-ignore-db = mysql 不需要同步的数据库

c、binlog-do-db = rogerdb 需要同步的库

d、binlog-ignore-db与binlog-do-db正好相反,如果你有100个库,只想同步其中几个,那么你应该使用binlog-do-db,如果不想同步其中的几个,就使用binlog-ignore-db

e、在实际测试中发现,如果通过上面两个命令指定了库,则master的Position 一直不会变化,google了一下有人说执行sql前要先use rogerdb才行-_-!

2、重启mysql服务

roger@ubuntu:~# /usr/local/mysql/share/mysql/mysql.server restart

3、建立同步用的数据库账户

mysql>GRANT REPLICATION SLAVE ON *.* TO slave@192.168.1.121 IDENTIFIED BY '1q2w3e'; 如果想要在Slave上有权限执行“LOAD TABLE FROM MASTER”或“LOAD DATA FROM MASTER”语句的话,必须授予全局的FILE 和SELECT 权限:

mysql>GRANT RELOAD,SUPER,FILE,SELECT,REPLICATION SLAVE ON *.* TO backup@192.168.1.121 IDENTIFIED BY '1q2w3e';

4、锁住主库表,停止数据更新

mysql> flush tables with read lock; 不要退出这个终端,否则这个锁就不生效了;

5、显示主库信息并记录

mysql> show master status; 记录前两框的数据

+—————————–+————-+———————–+—————————+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +—————————–+————-+———————–+—————————+

| mysql-bin.000016 | 1676483 | | | +—————————–+————-+———————–+—————————+

6、备份需要同步库文件并复制到从库服务器上,如果要同步全部库,则打包/usr/local/msyql/var目录,如果只同步一个数据rogerdb,则只复制rogerdb

roger@ubuntu:~#cd /use/local/mysql/var

roger@ubuntu:~#tar -zcvf mysql-master-rogerdb.tar.gz rogerdb //将rogerdb数据库打包

将文件mysql-master-rogerdb.tar.gz 传到slave机192.168.1.3:/usr/local/mysql/var/

=======================从库(192.168.121)====================================== 1、登陆从库,解压数据

roger@ubuntu:~# cd /usr/local/mysql/var

roger@ubuntu:~# tar -zxvf mysql-master-rogerdb.tar.gz

roger@ubuntu:~# chown -R mysql:mysql rogerdb

2、修改f

roger@ubuntu:~#vim /etc/f

禁掉bind-address此项

# 日志的名称

log-bin=mysql-bin

# 日志格式

binlog_format=mixed

# 从服务器ID

server-id=2

# 主服务器的IP地址或者域名

master-host=192.168.1.120

# 主数据库的端口号

master-port=3306

# 同步数据库的用户

master-user=slave

# 同步数据库的密码

master-password=1q2w3e

# 如果从服务器发现主服务器断掉,重新连接的时间差

master-connect-retry=60

# 需要备份的库

# replicate-do-db=rogerdb

# 忽略的数据库

replicate-ignore-db=mysql

#replicate-ignore-db=test

3、重启mysql服务

roger@ubuntu:~# /usr/local/mysql/share/mysql/mysql.server restart

4、手动同步从库

mysql>slave stop;

mysql>CHANGE MASTER TO MASTER_HOST='192.168.1.121',

mysql>CHANGE MASTER TO MASTER_USER='slave',

mysql>CHANGE MASTER TO MASTER_PASSWORD='1q2w3e',

mysql>CHANGE MASTER TO MASTER_PORT=3306,

mysql>CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000016',(刚才在主库记录的数据)

mysql>CHANGE MASTER TO MASTER_LOG_POS=1676483,(刚才在主库记录的数据)

mysql>CHANGE MASTER TO MASTER_CONNECT_RETRY=60;

mysql>slave start;

相关文档
最新文档