MySQL 主从数据库配置

闲来无事,发一篇技术文章。

准备工作,一台主服务器,两台从服务器

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;

当前还没有任何评论

写下你最简单的想法