1.设置主服务器配置
必须在主服务器上启用二进制日志,由于二进制日志是将更改从主服务器复制到从服务器的基础,若是未启用log-bin,则没法进行复制
复制组内的每一个服务器必须配置有惟一的id,此id用于标识组中的各个服务器,1到2³²-1之间的正整数。
配置:
[mysqld]
log-bin=mysql-bin
server-id=1
注意:在mysql8.0以上版本中,若是没有设置server-id,或server-id为0,则主服务器将拒绝任何从属服务器的连接mysql
2.建立用于复制的帐户
每一个从服务器都使用MySQL的用户名和密码连接主服务器,所以在主服务器上必须有一个用户帐户,已供从服务器连接。
须要为该帐户指定 REPLICATION SLAVE 权限
SQL:
CREATE USER 'repl'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
注意:mysql8.0以上不支持直接在授予权限的时候指定用户密码
3.获取主服务器的二进制日志位置
要配置从属服务器在正确的位置开始复制过程,您须要在其二进制日志中记下主服务器的当前坐标。此过程须要使用 FLUSH TABLES WITH READ LOCK ,它会阻止innodb表的commit操做,若是计划关闭主数据库以建立数据快照,则能够跳过此过程,而是将二进制日志索引文件的副本与数据快照一块儿存储。
步骤:
4.建立数据库快照
若是主数据库包含现有数据,则必须先将数据复制到每一个从数据库。
mysqldump -uroot -p --all-databases --master-data > dbdump.db
mysqladmin shutdown //关闭主服务器
tar cf /tmp/db.tar ./data
zip -r /tmp/db.zip ./data //使用zip或tar打包源数据文件,从服务器要用
unlock tables //在执行FLUSH TABLES WITH READ LOCK的客户端中执行该命令
5.从站设置
每一个从站都必须具备惟一的服务器id——server_id。若是没设置或与主服务器的server_id相同,须要在mysql.ini 或mysql.cnf中设置并指定惟一的server_id,而后重启服务器
若是主服务器已有数据,须要先将数据导入到从服务器
注意:若是没有设置server-id,或server-id为0,则从服务器将拒绝连接到主服务器
要设置从服务器与主服务器进行通讯以完成复制,须要为从服务器配置必要的连接信息。
CHANGE MASTER TO
MASTER_HOST='master_host_name', /**主服务器地址*/
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mybinlog.000021',
MASTER_LOG_POS=155;
不知道怎么的就搞成双向同步了。。。。sql