在实际企业应用环境当中,单台mysql数据库是不足以满足日后业务需求的。譬如服务器发生故障,没有备份服务器来提供服务的话,业务就得停止。介于这种情况,我们来学习一下mysql主从复制。
使用mysql主从复制的好处有:
1、采用主从服务器这种架构,稳定性得以提升。如果主服务器发生故障,我们可以使用从服务器来提供服务。
2、在主从服务器上分开处理用户的请求,可以提升数据处理效率。
3、将主服务器上的数据复制到从服务器上,保护数据免受意外的损失。
环境描述:
新企业要搭建架构为主从复制的mysql数据库。
主服务器(mysql-master):IP地址:192.168.133.128,mysql已安装,没有用户数据。
从服务器(mysql-slave):IP地址:192.168.133.129,mysql已安装,没有用户数据。
1、修改 主服务器(mysql-master)配置文件
vi /etc/mysql/my.cnf
找到 bind-address = 127.0.0.1
改为 bind-address = 服务器IP
找到
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
去掉 注释符号
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
重启MySql
sudo /etc/init.d/mysql restart
2、在主服务器上为从服务器建立一个用户:
grant replication slave on *.* to 'slave'@'192.168.196.88' identified by '111321';
#grant replication slave on *.* to '用户名'@'从服务器地址' identified by '密码';
刷新权限 flush privileges;
查看master是否建立完成: show master status;MySQL设置主从复制
记下File和Position的值
3、修改从从服务器(mysql-slave)配置
找到
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
去掉 注释符号
server-id = 10
log_bin = /var/log/mysql/mysql-bin.log
重启MySQL
4、在从服务器MySQL进行操作
mysql> change master to master_host='192.168.48.128',master_user='backup',master_password='backup',master_log_file='mysql-bin.000003',master_log_pos=299;
5、启动slave
mysql> start slave;
6、查看主从状态
mysql> show slave status\G
下面属性为yes说明主从正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
mysql> show slave status\G //用这个命令查看MySQL主从状态
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.17.2.40
Master_User: photorepl
Master_Port: 4331
Connect_Retry: 60
Master_Log_File: mysql-bin.005502
Read_Master_Log_Pos: 64401238
Relay_Log_File: mysqld-relay-bin.015418
Relay_Log_Pos: 13456757
Relay_Master_Log_File: mysql-bin.005152
Slave_IO_Running: Yes //为 Yes 说明主从正常
Slave_SQL_Running: Yes //为 Yes 说明主从正常
Replicate_Do_DB:
Replicate_Ignore_DB: mysql
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table: photo.%
Replicate_Wild_Ignore_Table: mysql.%
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 13456620
Relay_Log_Space: 36764898503
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: 249904
×××××××××××××××××××××××××××××××××××××××××
MySQL设置主从复制
下面在主服务器上做些操作。
mysql> create database mysqltest;
mysql> use mysqltest;
mysql> create table user(id int(5),name char(10));
mysql> insert into user values (00001,'zhangsan');
在从服务器上查看那
mysql> show databases;
mysql> use mysqltest;
mysql> select * from user;
就可以查看到相同的内容。
--转自