Mysql实现Master-Slave复制 同步

Mysql可以通过Master-Slave来实现数据的拷贝,这也是数据库读写分离的主要实现方式。

这几天试了一下Master-Slave的方式,把主要的要点总结一下,如果要看详细的,参考mysql的帮助。

我的测试服务器是两台ubuntu的机器,MASTER IP:192.168.1.100 SLAVE IP:192.168.1.101

1.要安装兼容版本的mysql,我这里在ubunut下,直接apt-get了一个mysql,安装的版本为
shell$ mysql -V
mysql  Ver 14.14 Distrib 5.1.41, for debian-linux-gnu (i486) using readline 6.1
端口默认3306

2.在主库上新建一个库 create database  testdb;
新建一张表 create table t_test1(id int,name varchar(32));
插入几条数据

3.mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.101' IDENTIFIED BY '123456';

4.更改主库的my.cnf
shell$vi /etc/mysql/my.cnf
主要修改为:
server-id               = 1  #master id  主库的id,不起用默认为1,设置m-s每一个id必须唯一
log_bin                 = /var/log/mysql/mysql-bin.log    #启用二进制日志
binlog_do_db            = testdb  #用于master-slave的具体数据库
#binlog_ignore_db       = include_database_name

保存退出重新启动mysql

5.查看主库状态
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 |      207 | testdb       |                  |
+------------------+----------+--------------+------------------+

OK,主库的基本设置完成,设置从库

首先备份主库
shell$ mysqldump -uroot -p testdb>testdb.sql

传到101上去
shell$ scp -P 22218 testdb.sql [email protected]:~

登入101,创建 create database testdb;

还原
shell$ mysql -uroot -p testdb show master status;

在101上,编辑my.cnf文件

sudo vi /etc/mysql/my.cnf
server-id = 2  # mysql的一个id,每一个mysql有一个唯一的id不能重复

编辑完了之后,重启mysql。

进入mysql,关闭mysql slave : slave stop;
改变主库的连接
mysql>CHANGE MASTER TO MASTER_HOST='192.168.1.100',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000006',MASTER_LOG_POS=207;

启动slave : slave start;
主库运行:

mysql>SHOW PROCESSLIST\G;

如果看到
Command: Binlog Dump
启动完成
从库也运行

mysql>SHOW PROCESSLIST\G;
看到
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
     Id: 10
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 11
  State: Waiting for master to send event
   Info: NULL
*************************** 2. row ***************************
     Id: 11
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 11
  State: Has read all relay log; waiting for the slave I/O thread to update it
   Info: NULL
说明启动,接下来,我们在主库插入数据,再在从库查询是否有数据,有,就安装成功。

总结,mysql master-slave安装不是很难,主要有注意几点
1.数据库版本要兼容
2.数据库实现拷贝之前要同步

你可能感兴趣的:(mysql,linux,Debian,SQL Server,ubuntu)