insert update delete 等操作的时候(主要指表操作,当然也包括create数据库或者表等命令),操作内容会被写入binlog首选,安装一下MySQL
sudo apt install -y mysql-server mysql-client如果装完了发现,不知道密码,也无法登陆MySQL,莫慌,看这里:ubuntu安装MySQL后无法登陆也无法修改密码
配置从库账号,其中 vien 和 password 换成你的用户名密码,用于从库连接主库,192.168.0.172是从库的IP地址
GRANT REPLICATION SLAVE ON *.* to 'vien'@'192.168.0.172' identified by 'password';刷新权限
FLUSH PRIVILEGES;修改配置文件
vim /etc/mysql/my.cnf在文件末尾追加:
[mysqld]
#服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin
# 同步的数据库,不写默认全部
binlog-do-db=test_db
# binlog日志保留的天数,清除超过10天的日志 防止日志文件过大,导致磁盘空间不足
expire-logs-days=10
#不同步mysql系统数据库。
binlog-ignore-db=mysql还有就是默认是不开启远程连接的,需要注释掉绑定127.0.0.1连接的配置项:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf找到这一行并且注释
bind-address            = 127.0.0.1改为
# bind-address            = 127.0.0.1重启服务
service mysql restart查看当前日志状态
mysql> show master status;打印结果
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      154 |              | mysql            |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)修改配置文件
vim /etc/mysql/my.cnf在文件末尾追加:
[mysqld]
#服务器唯一ID
server-id=100重启mysql
service mysql restartMySQL内执行:
停止slave同步进程
stop slave;执行同步语句
change master to master_host='192.168.0.141',master_user='slave0',master_password='slave0',master_log_file='mysql-bin.000001' ,master_log_pos=154;master_host 是 主机IP,master_user 和 master_password 是之前在master主机上为slave创建的账户和密码,master_log_file 是master上的binlog日志名称,master_log_pos 是日志偏移量,上面show master status;里有相关信息, master_port 是端口号,默认3306。
开启slave同步进程
start slave;查看slave同步信息
show slave status\G;截取部分打印:
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.0.141
                  Master_User: slave0
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 154
               Relay_Log_File: hecs-x-xlarge-2-linux-20201117135522-relay-bin.000003
                Relay_Log_Pos: 367
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes通过Slave_IO_Running和Slave_SQL_Running可以看到IO进程和SQL进程状态都是Yes,Slave_IO_State 显示正在等待master发送event,这说明大功告成了,接着我们来试一下效果。
在master上创建一个叫test的数据库
create database test;然后查看一下:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)可以看到我们创建了一个叫test的数据库,然后去slave服务器看一下
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)可以发现,同样也创建了一个叫test的数据库,可喜可贺,可口可乐,完。
viencoding.com版权所有,允许转载,但转载请注明出处和原文链接: http://45.76.225.121/article/286