ubuntu server 12.10 mysql的主从复制笔记
os:ubuntu server 12.10
二台服务器,a的内网ip为192.168.1.111,b的内网ip为192.168.1.222,a做为master,b做为slave
1. 配置a的mysql
(1) vim /etc/mysql/my.cnf
去掉[mysqld]段中 server_id =1 和log_bin=/var/log/mysql/mysql-bin.log的#注释
加上 binlog-do-db = s3 s3就是要同步的数据库的名称,如果没有这一行,表示同步所有的数据,另外 binlog_ignore_db = mysql。要表示忽略同步的数据库名称为mysql,如果有多个要指定同步或是忽略同步的数据,就配置多行,保存退出。
(2) 创建一个复制用的账户(名称为repl,允许从远程连接,密码为123456):
grant replication slave, reload,super, no *.* to repl@'%' identified by '123456';
flush privileges;
(3) 重启mysql服务,或是直接reboot机器也可以
(4) 进入mysql,,然后用 show master status\g 查看二进制日志的状态,看到类似以下的结果:
+------------------+----------+--------------+------------------+
| file | position | binlog_do_db | binlog_ignore_db |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 1376 | s3 | |
+------------------+----------+--------------+------------------+
2. 配置b的mysql
(1) vim /etc/mysql/my.cnf
去掉[mysqld]段中 server_id =1 和log_bin=/var/log/mysql/mysql-bin.log的#注释,把server_id改为2,要和master机器的不一样。并增加以下内容:
binlog_do_db=s3
log-slave-updates
保存退出
(2) 重启mysql服务
(3) 进入mysql,执行
change master to master_host='192.168.1.111', master_user='repl',master_port=3306,master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=1376;
slave start;
注意上面的change语句中,master_log_file和master_log_pos就是上面1.4中提到的show master status命令得到的结果,指定二进制文件的名称和开始同步的位置。
(4) 查看slave状态: show slave status\g
*************************** 1. row ***************************
slave_io_state: waiting for master to send event
master_host: 192.168.1.111
master_user: repl
master_port: 3306
connect_retry: 60
master_log_file: mysql-bin.000003
read_master_log_pos: 1376
relay_log_file: mysqld-relay-bin.000002
relay_log_pos: 1355
relay_master_log_file: mysql-bin.000003
slave_io_running: yes
slave_sql_running: yes
replicate_do_db:
replicate_ignore_db:
replicate_do_table:
replicate_ignore_table:
replicate_wild_do_table:
replicate_wild_ignore_table:
last_errno: 0
last_error:
skip_counter: 0
exec_master_log_pos: 1376
relay_log_space: 1512
until_condition: none
until_log_file:
until_log_pos: 0
master_ssl_allowed: no
master_ssl_ca_file:
master_ssl_ca_path:
master_ssl_cert:
master_ssl_cipher:
master_ssl_key:
seconds_behind_master: 0
master_ssl_verify_server_cert: no
last_io_errno: 0
last_io_error:
last_sql_errno: 0
last_sql_error:
replicate_ignore_server_ids:
master_server_id: 1
上面的红色二行如果为yes则表示已经正常连接,可以进行复制了。