MySQL 官网
MySQL Community Server 下载地址
这是我先择的版本
选择DEB Bundle,全部deb都打包在一起
在服务器上解压到一个目录下
然后
sudo dpkg -i *.deb
sudo apt-get install -f
主从服务器都安装
配置目录在/etc/mysql/
一台服务器做master,一台做slave
在master上/etc/mysql/mysql.conf.d/mysqld.cnf
里面
port = 3306 # 自行定义,默认是3306
datadir = /var/lib/mysql # 自行定义
default_authentication_plugin=mysql_native_password # 使用native密码方式,不然后面会出现slave连接不上master的情况
server-id = 1 # 必须是一个唯一独特的id,不能与其他mysql重复
log_bin = /var/log/mysql/mysql-bin.log # 主从同步的关键,mysql根据bin_log来同步数据。
# bind-address = 127.0.0.1 # 这一项需要改掉或者注释掉,不然slave 连接不上master
在slave上/etc/mysql/mysql.conf.d/mysqld.cnf
里面
# 其他的与master上面类似
# slave 需要的:
relay-log=/var/log/mysql/mysql-relay-bin.log
replicate-wild-ignore-table=mysql.% # 从机备份主机忽略 database mysql
replicate-wild-ignore-table=information_schema.% # 从机备份主机忽略 database information_schema
replicate-wild-ignore-table=performance_schema.% # 从机备份主机忽略 database performance_schema
在master机器上登录上mysql
mysql -uroot -p # 初始密码自行解决# 创建一个用户
# user: replicat,
# host: 所有
# 密码: 123
create user 'replica'@'%' identified with mysql_native_password by '123';# 赋予'replica'@'%' *.* 表的 复制 权限
grant replication slave on *.* to 'replica'@'%';# 权限立即生效
flush privileges;
exit;
重启master之后锁表, 来防止mysql表开始有变化
service mysql restart
mysql -uroot -p -e "flush tables with read lock;"
在从机上面编写change_master.sql,也可以不用sql文件手动一条条执行
stop slave;
change master to
master_host='.....', # 主机的地址,自行填写
master_user='replica',
master_password='123',
-- can see at master mysql: show master status;
master_log_file='mysql-bin.000104',
master_log_pos=157;
start slave;
master_log_file与master_log_pos需要在主机上找到
在master上面
mysql -uroot -p -e "show master status\\G"
可以看到输出
*************************** 1. row ***************************File: mysql-bin.000104Position: 157Binlog_Do_DB:Binlog_Ignore_DB:
Executed_Gtid_Set:
然后 在slave上面mysql -uroot -p < change_master.sql
然后查看状态mysql -uroot -p -e "show slave status\\G"
看到Slave_IO_Running 与 Slave_SQL_Running 都是Yes,就是slave 连接master 成功了
在master上面要记得把之前上锁的表给解锁了, mysql -uroot -p -e "unlock tables;"
现在可以测试一下主从同步是否可用,
在master上新建数据库,新建表,增删改数据看看slave上面是否同步。