版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/uagvdu/article/details/78971877
一:
主数据库服务器: 172.30.157.183 ; master
从数据库服务器: 172.30.157.188 ; slave
主从服务器系统版本和版本位数一致
MySQL 版本一致。
二、设置主服务器: master
1: 配置
进入: # vim /ect/my.cnf :
【mysqld】
log_bin = mysql-bin
server-id = 1
user = mysql
#主从复制配置
innodb_flush_log_at_trx_commit=1
sync_binlog=1
#需要备份的数据库
binlog-do-db=test
#不需要备份的数据库
binlog-ignore-db=mysql
#不需要备份的数据库
binlog-ignore-db=information_schema
#不需要备份的数据库
binlog-ignore-db=performance_schema
# These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql
datadir = /db/mysql/data
#port =3306
#server_id = 120.76.112.207
#socket =
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
log_error = /var/log/mysql/error.log
#pid_file = /var/lib/mysql/mysql.pid
#开启查询缓存
#explicit_defaults_for_timestamp=true
symbolic-links=0
#innodb_force_recovery=1
配置完文件信息之后,重启mysqld服务 :
# service mysqld restart。
2. 锁定,并 备份现有的主数据库:
这个操作的原因是: 当主从数据库完成“同步链接” 之后,从服务器只能同步 “同步链接”之后的操作,“同
步链接”之前的操作并不能被从服务器给备份出来,所以,你若想将主服务器的所有数据都备份到从服务器上,
那么就需要先备份主服务器的数据;
方法: 利用mysqldump命令备份主服务器的某一数据库
# mysqldump -uroot --quick --flush-logs --master-data=1 -p myproject > myproject.sql
附注:--master-data的用法为:通过此参数来备份SQL文件时会建议一个slavereplication,当其值为
1时,SQL文件中会记录change master语句;当其值为2时,change master会被写成SQL注释,--
master-data在没有使用--single-transaction选项的情况下会自动使用lock-all-tables选项(即这
二代选项不要搭配使用)。如何查找SQL中的的LOG_FILE及LOG_POS呢?我们可以用如下命令(请注意
change单词要写成大写的),
在myproject.sql 文件所在目录下:用grep “CHANGE”myproject.sql来查看LOG_FILE和LOG_POS
3. 创建同步用户:
1. mysql> create user 'repl'@'172.30.157.183' identified by '123456';
2. mysql> grant replication slave on *.* to 'repl'@'172.30.157.183' identified
by '123456';
4. 查看master的状态
mysql> show master status;
三:设置从服务器:slave
1. 配置:记得配置完之后重启mysqld
【mysqld】
user=mysql
basedir = /usr/local/mysql
datadir = /db/mysql/data
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
log_error = /var/log/mysql/error.log
log_bin = mysql-bin
server-id = 2 : 一定不能和主服务器的一致
2. 导入主数据库备份的数据库数据:
1. 首先需要你把主数据的myproject.sql文件传递给从服务器,
2. 命令: mysqladmin 和 mysql 命令
# mysqladmin -uroot create myproject -p : 给从服务器上的数据库创建 myproject库名
# mysql -uroot myproject<myproject.sql -p :将.sql数据导入到从服务器的数据库上
除了上面的方式外:你也可以直接用cp命令将数据文件复制到从数据库去
3. 进入mysql:执行
mysql> change master to master_host='172.30.157.183',
master_user='repl',
master_password='123456',
master_port=3306,
master_log_file='mysql-bin.000003',
master_log_pos=2005,
master_connect_retry=10;
标颜色的都是你需要注意更改的:
master_host:主服务器的IP。
master_user:配置主服务器时建立的用户名
master_password:用户密码
master_port:主服务器mysql端口,如果未曾修改,默认即可
master_log_file:日志文件名称,填写查看master状态时显示的File
master_log_pos:日志位置,填写查看master状态时显示的Positio
master_connect_retry:重连次数。
4. 启动/关闭 数据同步线程
mysql> start slave;
mysql> stop slave;
5、 查看数据同步状态:
mysql> show slave status\G
当 Slave_IO_Running: YES
Slave_SQL_Running: YES 都为yes的时候代表同步成功,主从服务器可以进行同步操作了;
资料链接:
http://www.jb51.net/article/59497.htm
http://blog.csdn.net/zhouzhiwengang/article/details/51725245