闲来无事,发一篇技术文章。
准备工作,一台主服务器,两台从服务器
Master:192.168.23.111
Slave1:192.168.23.112
Slave2:192.168.23.113服务器使用相同版本
Master配置:
cat /etc/my.conf
在[mysqld]栏下添加这些,更详细的自己查
#主机 server-id=1 ###唯一的ID log_bin=/var/log/mysql/mysql-bin.log read-only=0 ###是否设置为只读 binlog-do-db=pitus ###pitus为指定要备份的数据库 binlog-ignore-db=mysql ###mysql为忽略的数据库 #主机结束
创建临时文件夹,并修改用户组
mkdir /var/log/mysql
chown mysql:mysql /var/log/mysql
在master主机上创建新用户
创建两个用户:
GRANT REPLICATION SLAVE ON *.* TO ‘backup’@’192.168.23.112’ IDENTIFIED BY ‘123456’;
GRANT REPLICATION SLAVE ON *.* TO ‘backup’@’192.168.23.113’ IDENTIFIED BY ‘123456’;
创建数据库pitus
CREATE DATABASE `pitus`;
master 状态测试
#重新启动服务并进入 service mysqld restart mysql -uroot -p123456 mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000003 | 2314 | pitus | mysql | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
只读数据库slave1配置
#主从 server-id=2 ###不一样额ID值 log_bin=/var/log/mysql/mysql-bin.log master-host=192.168.23.111 ###主数据库地址 master-user=backup ###从数据库登录信息 master-pass=123456 master-port=3306 master-connect-retry=60 ###失败重试时间 replicate-do-db=pitus ##同步的数据库 replicate-ignore-db=mysql ###忽略的数据库 #主从结束
创建临时文件夹,并修改用户组
mkdir /var/log/mysql
chown mysql:mysql /var/log/mysql
只读数据库slave2配置 ###修改ID为3
#主从 server-id=3 ###不一样额ID值 log_bin=/var/log/mysql/mysql-bin.log master-host=192.168.23.111 ###主数据库地址 master-user=backup ###从数据库登录信息 master-pass=123456 master-port=3306 master-connect-retry=60 ###失败重试时间 replicate-do-db=pitus ##同步的数据库 replicate-ignore-db=mysql ###忽略的数据库 #主从结束
创建临时文件夹,并修改用户组
mkdir /var/log/mysql
chown mysql:mysql /var/log/mysql
slave 测试
重启服务器
root账号进入
创建数据库
CREATE DATABASE `pitus`;
slave start; ###启动
查看状态
mysql> show slave status; +------------ | Slave_IO_State | Master_Host | Master_User | Master_Port | Connect_Retry | Master_Log_File | Read_Master_Log_Pos | Relay_Log_File | Relay_Log_Pos | Relay_Master_Log_File | Slave_IO_Running | Slave_SQL_Running | Replicate_Do_DB | Replicate_Ignore_DB | Replicate_Do_Table | Replicate_Ignore_Table | Replicate_Wild_Do_Table | Replicate_Wild_Ignore_Table | Last_Errno | Last_Error | Skip_Counter | Exec_Master_Log_Pos | Relay_Log_Space | Until_Condition | Until_Log_File | Until_Log_Pos | Master_SSL_Allowed | Master_SSL_CA_File | Master_SSL_CA_Path | Master_SSL_Cert | Master_SSL_Cipher | Master_SSL_Key | Seconds_Behind_Master | Master_SSL_Verify_Server_Cert | Last_IO_Errno | Last_IO_Error | Last_SQL_Errno | Last_SQL_Error | +-------------- | Waiting for master to send event | 192.168.23.111 | backup | 3306 | 60 | mysql-bin.000003 | 2314 | mysqld-relay-bin.042931 | 1726 | mysql-bin.000003 | Yes | Yes | pitus | mysql | | | | | 0 | | 0 | 2314 | 2027 | None | | 0 | No | | | | | | 0 | No | 0 | | 0 | | ----------+----------------+----------------+ 1 row in set (0.00 sec)
当Slave_IO_Running | Slave_SQL_Running均为yes时成功,
失败时尝试:
slave stop;//同时该命令执行后可通过复制数据库文件的方式手动同步
slave start;//再次启用
依旧无效考虑重启数据库服务,检查配置文件
service mysqld restart
数据测试
在master中:
CREATE TABLE `user` ( `user` char(40) NOT NULL, PRIMARY KEY (`user`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
创建用户表后去slave服务器中查看
use pitus;
show tables;
如果需要在从数据库中使用其他引擎直接修改表类型
在slave中
ALTER TABLE `user`
ENGINE=MyISAM;
在master中插入数据:
Insert into user values(‘test’);
在slave中查看数据:
select * from user;
当前还没有任何评论