总体步骤
总体步骤
两台linux机器下的主从复制
主机配置 /etc/my.cnf 都是在mysqld节点下的
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# 开启Binary Log 官网就是用的mysql-bin 就不要改名字了
log-bin=mysql-bin
# 设置全局ID
server-id=1
# 指定需同步的数据库(因为数据库名称可能包含逗号,因此多个数据库必须重复配置多次而不能以逗号分隔),默认所有数据库都同步
#binlog-do-db=database_name
# 指定禁止同步的数据库 可以忽略的数据库,比如说mysql自带的数据库mysql,如果不指定禁止,就所有数据库都同步
#binlog-ignore-db=mysql
# 指定Binary Log格式
#binlog_format=MIXED
#read-only 的意思是,读写都可以
read-only=0
从机配置 /etc/my.cnf 都是在mysqld节点下的
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
//上面默认的不用动,就动下面两个
log-bin=mysql-bin
server-id=2
主从机器的配置文件修改之后,需要重新启动才生效 输入命令 systemctl restart mysqld
接下来是主机的设置:
创建用户
登录mysql后创建一个用户,比较推荐,因为可以用来专门做数据备份的
create user ‘mingzi’@‘localhost’ identified by ‘mingzi’;
给slave授权
grant replication slave on . to ‘mingzi’@‘从机器ip’ identified by ‘mingzi’;
*.*的意思是所有数据数据库和所有表,@后面的是从机的ip地址,意思是从机可以用mingzi账户登录主机数据库 identified by 后面是密码
flush privileges;
更新一下刚刚的创建用户和授权
show master status;
查看master的状态,里面有两个值需要记下来,file 和 position
从机的配置:
mysql> change master to master_host='192.168.65.128',
-> master_user='mingzi',
-> master_password='mingzi',
-> master_log_file='mysql-bin.000001',
-> master_log_pos=154;
master_host :主机ip
master_log_file:主机那里记下来的file文件名
master_log_pos:主机那里记下来的position,若stop过slave或者说是,同步过主机的文件,那么主机的position是会变的,如果说下次再操作的时候,一定要重新查看主机的值,确定一下
开启从机的主从复制
mysql> start slave;
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
查看状态,那两个必须同时为yes,不然不行,要重新配置从机 然后就可以去主机上尝试了,建个数据库创个表,然后看有没有复制就可以了