Mysql主从复制的简单配置
发布日期:2016-4-26 18:4:59
刚开始我们先配置一个主服务器和一个从服务器的情况,在使用一段时间以后再加入一个从服务器。 主服务器(master)的配置 首先我们需要进行主服务器的配置。 1. 首先打开MySQL的配置文件my.cnf 在配置文件中配置如下的两个选项: [mysqld] log-bin = mysql-bin server-id = 1//注意这里的server-id,在一组主从服务器中,每个服务器(不管是主服务器还是从服务器)都有一个id,并且这个id是唯一的,各个服务器之间不能相同。如果不配置此项,那么这个主服务器的server-id默认为0,如此则不允许任何从服务器连接 2. 在主服务器中创建一个用户用于从服务器的连接 mysql> CREATE USER ‘repluser’@’%’ IDENTIFIED BY ‘repluser’ //第一个repluser 表示账户名 第二个repluser表示密码,当然这些可以自己定义。%表示接受来自于任何主机的连接 mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repluser’@’%’ 3. 然后获得主服务器的binlog信息 首先刷新所有表和块儿的写入状态 mysql> FLUSH TABLES WITH READ LOCK 然后显示master的binlog状态 mysql>SHOW MASTER STATUS 对于新服务器来说显示结果如下所示: +------------------+-------------+-----------------+------------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+-------------+-----------------+------------------+------------------+ | mysql-bin.000001 | 13 | | | +------------------+-------------+-----------------+------------------+------------------+ 这里需要记住 file 和position两个字段的值,在配置从服务器的时候需要用到以上这两个选项 4. 释放read 锁 mysql> UNLOCK TABLES 到此主服务器的配置就算是完成了,真的是挺简单的。下面配置从服务器 从服务器(slave)的配置 在配置完主服务器以后下面我们开始配置从服务器。 1. 首先应该在配置文件my.cnf中为从服务器指定一个server-id并且关闭从服务器的binlog日志 [mysqld] #log-bin = mysql-bin server-id = 2 2. 然后开启从服务器 mysql>START SLAVE 3. 这一步是非常主要的,我们需要告诉从服务器必须的连接主服务器的信息,这样才能和主服务器建立通信。 mysql> CHANGE MASTER TO -> MASTER_HOST = ‘主服务的地址’, -> MASTER_USER = ‘repluser’, //这是上面新建的用户 -> MASTER_PASSWORD = ‘preluser’, -> MASTER_LOG_FILE = ‘mysql-bin.000001’, //这是在上述第三步需要记住的file的值 -> MASTER_LOG_POS = 13; //这是在上述第三步需要记住的position的值 4. 然后查看从服务器的状态 mysql> SHOW SLAVE STATUS\G 显示的结果如下所示: Slave_IO_State: Waiting for master to send event //等待主服务器的操作 Master_Host: 192.168.144.128 //这是我主服务器的地址 Master_User: repuser //用户名 Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 13 Relay_Log_File: localhost-relay-bin.000007 Relay_Log_Pos: 23 Relay_Master_Log_File: mysql-bin.000001 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: 336 Relay_Log_Space: 642 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: Replicate_Ignore_Server_Ids: Master_Server_Id: 1 //主服务器的id 出现以上信息说明从服务器配置成功。 当然我们一开始就可以按照上述步骤配置多个从服务器,只是server-id不同。 主服务器和从服务器都配置完成以后我们可以做一个测试,在主服务器中的test数据库中创建一个表,并插入一些数据 mysql> use test; mysql> create table repl(id int(5) not null primary key auto_increment,name varchar(100)); mysql> insert into repl(name)values(‘test1’); mysql> insert into repl(name)values(‘test2’); 然后在从服务器中查看数据是否同步,没有特殊情况的话数据是同步过来的。 在当前的主从复制集合中新加一台从服务器 对于已经存在的从服务器我们称之为 oldslave(其ip地址为192.168.144.131) ,新添加的称之为 newslave (其ip地址为192.168.144.132)。 1. 首先要关闭已经存在的从服务器 oldslave mysql> mysqladmin shutdown 2. 然后将oldslave的data目录拷贝到 newslave中 mysql]# tar zcvf data.tar.gz data mysql]# scp data.tar.gz root@192.168.144.132:mysql安装目录 3. 进入newslave服务器中 mysql]# tar –zxvf data.tar.gz //解压传输过来的data包,解压完以后newslave中的data目录就和oldslave中的目录合并,如果oldslave中的data目录中没有master.info和relay-log.info两个文件的话那还需要将这两个文件拷贝过来 4. 修改newslave的server-id 并且关闭binlog 日志,如下所示: [mysqld] #log-bin = mysql-bin server-id = 3 5. 在newslave上开启mysql服务,并且开启slave机制 mysql]# service mysqld start mysql> START SLAVE; 这样操作的话,如果没有特殊情况的话就成功的加入了一台从服务器。 上一条: 各个版本MySQL并行复制的实现与优缺点 下一条: mysql的my.cnf
|