搭建两台Linux服务器,ip地址分别为:192.168.0.105,192.168.0.106
分别安装mysql数据库,确保两台服务器之间能相互访问
编辑my.cnf
[root@world ~]# vim /etc/my.cnf
在头部加入如下内容,两个数据库的server_id不能一样
[mysqld]
server_id=10
log-bin=mysql-bin
执行下面命令验证serve_id
MariaDB [(none)]> SHOW VARIABLES LIKE 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 10 |
+---------------+-------+
1 row in set (0.00 sec)
假如192.168.0.105为主数据库,192.168.0.106为从数据库
在主数据库上执行show master status,查看主数据库日志文件
MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 245 | | |
+------------------+----------+--------------+------------------+
把获取到的参数添加到下面对应的参数里
change master to
master_host='192.168.0.105',
master_user='root',
master_password='root',
master_log_file='mysql-bin.000001',
master_log_pos=245;
在从数据库里登录数据库,执行上面的命令,添加主数据库,然后执行下面命令查看是否添加成功。
MariaDB [(none)]>show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.105
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 245
Relay_Log_File: mariadb-relay-bin.000002
Relay_Log_Pos: 529
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...................省略部分........................
看到下面的两个Yes表示,命令执行成功。
此时,mysql主从复制已搭建好,192.168.0.105服务器上对主数据库所有的操作,192.168.0.106服务器上对应的从服务器会按照顺序执行一遍。
搭建双主结构,只需按照上面的操作,只是调换对象,把主服务器变成从服务器,把从服务器变成主服务器,在操作一遍即可。