1.环境准备 2台主机上分别安装好 mysql服务
2.设置mysql_master,修改 master 数据库的配置文件,vim /etc/my.cnf
[mysqld]
... ... ... ...
log-bin=mysql-bin # 二进制日志名称,开启bin-log
server-id=1 # 为服务器设置一个独一无二的id
3.重启 mysql_master 数据库服务:
service mysqld restart
4.对mysql_slave的设置,不需要开启二进制日志,仅需要设置以下 server-id 即可
server-id=2
5.重启 mysql_slave 数据库服务:
service mysqld restart
6.创建主从复制账号
create user 'dba'@'xxx.xxx.xxx.%' identified by 'password';
grant replication slave on *.* to dba@'xxx.xxx.xxx.%';
7.对mysql_master 所有的数据库(包括触发器,存储过程,函数)导出到 all.sql
show databases;(先查看mysql服务下面有哪些库)
./mysqldump --single-transaction --master-data=2 --triggers --routines --all-databases -uroot -p >/tmp/all.sql
8.在mysql_slave 手动导入 all.sql
./mysql -uroot -p < /tmp/all.sql
9.查看主服务器BIN日志的信息
执行完之后记录下这两值,然后在配置完从服务器之前不要对主服务器进行任何操作,因为每次操作数据库时这两值会发生改变。
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 2823| | |
+------------------+----------+--------------+------------------+
10.设置从服务器并启用slave
mysql>change master to master_host='xxx.xxx.xxx.xx',
master_user='dba',
master_password='password',
master_log_file='mysql-bin.000002',
master_log_pos=2823;
11.启动从服务器
stop slave;
start slave;
show slave status \G
出现:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
表示成功