主库配置
1,配置my.cnf
vim /etc/my.cnf
在[mysqld]追加下面内容:
server-id=1 #设置服务器id,为1表示主服务器,一般用IP地址接替
log-bin=mysql-bin #启动MySQ二进制日志系统
binlog-do-db=test #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-ignore-db=mysql #不同步mysql系统数据库
2,重启数据库,查看主库状态
service mariadb.service restart # 我用的mariadb, mysql用 service mysqld restart
mysql -h localhost -u root -p #登陆
MariaDB [(none)]> show variables like 'server_id'; #查看server-id的值是否为1
MariaDB [mysql]> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 2997 | ds_0,ds_1 | mysql |
+------------------+----------+--------------+------------------+
从库配置
1,配置my.conf文件
vim /etc/my.cnf #编辑配置文件,在[mysqld]部分添加下面内容
server-id=2 #设置服务器id,修改其值为2,表示为从数据库
log-bin=mysql-bin #启动MySQ二进制日志系统
replicate-do-db=test #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
replicate-ignore-db=mysql #不同步mysql系统数据库
read_only #设置数据库只读 ## 这句话我这不起作用(read_only=1也不行),可能是因为我用的root用户,有时间需要验证
2,重启数据库,查看从库状态
service mariadb.service restart
mysql -h localhost -u root -p (3,4,5,6步均在mysql登录里面执行)
show variables like 'server_id'; #看是不是等于2
3,停止同步进程
MariaDB [(none)]>stop slave;
4,执行同步语句
MariaDB [(none)]> change master to master_host='192.168.7.146',master_user='root',master_password='123456',master_log_file='mysql-bin.000001' ,master_log_pos=2997;
# 注意:这里最后2个参数可以参考主库配置里面show master status 的结果
5,开启同步进程
MariaDB [(none)]> start slave;
6,查看slave同步信息
MariaDB [(none)]> SHOW SLAVE STATUS\G
以下这两个参数的值为Yes,说明配置成功!
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Slave_SQL_Running为NO问题
MariaDB [(none)]> stop slave;
MariaDB [(none)]> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G
Slave_IO_Running为NO问题
主库上运行show master status找到正确的MASTER_LOG_FILE和MASTER_LOG_POS,然后执行下面语句
MariaDB [(none)]> slave stop;
MariaDB [(none)]>CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=0;
MariaDB [(none)]> slave start;
MariaDB [(none)]> show slave status\G
mysql-proxy实现读写分离