在这里分两个情况:1、两台服务器中都没有数据 2、主服务器上已经有数据,此时再开启从服务器
一、两台服务器中都没有数据
在复制结构中从服务器的mysql的版本要比主服务器的一样或者高也行。
主mysql的ip是192.168.0.1
从mysql的ip是192.168.0.2
端口都是:3306
mysql的版本5.1.61源码编译安装
1.主服务器执行如下
修改配置文件:
在/etc/my.cnf中添加启动二进制文件
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
datadir = /usr/local/mysql/var
skip-locking
wait_timeout = 30
table_lock_wait_timeout = 30
#skip-grant-tables
key_buffer = 384M
max_allowed_packet = 32M
table_cache = 128M
sort_buffer_size = 8M
net_buffer_length = 8K
read_buffer_size = 8M
read_rnd_buffer_size = 32M
myisam_sort_buffer_size = 16M
thread_cache_size = 64
thread_stack = 512k
query_cache_size = 64M
tmp_table_size = 256M
log-error=log-error.log
log-bin=mysql-bin #二进制日志,主库必须开启
#哪个数据库不需要复制
binlog-ignore-db=test
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
server-id=100 #默认是1,服务器ID号,整数值,保证唯一标识一台服务器就可以
进入主mysql执行如下语句
在主服务器上创建复制帐号,授予相应的权限。注意,复制帐号的口令最好不要超过6位,而且不要带"#"等特
殊字符。
mysql>create user backup;
mysql>grant replication slave on *.* to 'backup'@'192.168.0.2' identified by '123456';
mysql>FLUSH PRIVILEGES;
创建backup用户,并授权给192.168.0.2使用
查询主数据库状态,并记下FILE及Position的值
show master status;
修改完成后重新启动mysql服务
2.从服务器执行如下
在/etc/my.cnf的mysqld下添加
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
socket=/tmp/mysql.sock
datadir=/usr/local/mysql/var
master-host=192.168.0.1 #主库地址,必须使用IP,不能使用域名
master-user=backup #从库连接主库使用该用户名
master-password=123456
master-connect-retry #选项控制重试间隔。默认为60秒。
table_lock_wait_timeout=30
wait_timeout=30
skip-locking
key_buffer = 384M
table_cache = 128M
sort_buffer_size = 8M
read_buffer_size = 8M
read_rnd_buffer_size = 32M
myisam_sort_buffer_size = 16M
thread_cache_size = 64
thread_stack = 512K
query_cache_size = 64M
tmp_table_size = 256M
max_allowed_packet = 32M #任何生成的中间字符串的最大大小。默认为16M,最低配置32M,且不能小于主
库该项的值
read-only #设置从服务器为只读的,避免在从库上进行写操作,导致主从数据不一致
skip-slave-start #启动数据库后,需手动开启同步进程
log-error=log-error.log
#log-bin=mysql-bin #关掉二进制日志
server-id=200 ##id号一定不能与主服务器的id号相同
添加如下内容: ##这些是开启中继日志的
relay-log=relay-bin #中继日志,从库开启
relay-log-index=relay-bin.index
设置忽略复制系统数据库
#replicate-do-db= #需要同步的表,多个表需要多次指定,如果不明确指定禁止复制,默认就是允许复制
replicate-ignore-db=test #不需要同步的表,多个需要多次指定
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-wild-do-table = example1.% #需要同步的表,支持正则表达式,数据库example1下的所有表
replicate-do-table = example1.table1 #需要同步的表,多个表需多次指定,数据库example1下的table1
replicate-wild-ignore-table = mysql.% #不需要同的表,多个表需要多次指定
replicate-wild-ignore-table = test.%
replicate-rewrite-db = from_name->to_name #同步库重命名
slave-net-timeout = 3600 #在所设置的时间内如果没有接收到来自主库的更新,从库则认为和主库的连接断开或失效,重新建立和主库的连接,默认为3600秒,可根据实际需求调整
退出从新启动从服务器/etc/init.d/mysqld restart or service mysqld restart
登陆从服务器执行如下语句
mysql>change master to
mysql>master_host='192.168.0.1',master_user='backup',master_password='123456',master_log_file='m
ysql-bin.000001',master_log_pos=98;
注意:mysql-bin.00001和master_log_pos是在主服务器上查询的 mysql>show master status;
启动同步
mysql>start slave;
mysql>show slave status\G;
如果出现以下结果表明连接成功,则连接失败。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
二、主服务器上已经有数据,此时再开启从服务器
1、 在开启从服务器之前要先把主服务器上的数据导入从服务器中。所以要先备份一下主服务器上的数据
# mysqldump -uroot -p --all-database > /tmp/all.sql
2、将备份复制到从服务器中
# scp /tmp/all.sql 192.168.0.2:/tmp/
3、在从服务器上,把备份导入服务器中
# mysql -uroot -p < /tmp/all.sql
Enter password:
4、下面就可以连接了,但是在连接之前要先查看备份的文件
用命令head来查看
# head -30 /tmp/all.sql ##查看前30行的
有一行是:
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=98;
说明要备份的位置是:MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=98
所以在连接之前一定要说明这个位置
5、下面来开始备份
mysql>CHANGE MASTER TO MASTER_HOST='192.168.0.1',MASTER_USER='backup',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=98;
返回的结果:Query OK, 0 rows affected (0.02 sec)
说明备份成功
6、下面就可以启动从服务器了
mysql>start slave;
mysql>show slave status\G ##查看从服务器的状态是否连接成功
如下所示说明成功连接:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
最后再来测试一下。 在主服务器上创建或者删除数据库、表,就可以同步到从服务器上了。
mysql>create database aa;
mysql>use aa;
mysql>create table t1 (id int,name char(10));
mysql>insert t1 values (1,'han');
在从服务器上查看是否同步成功
mysql>show databases;
mysql>use aa;
mysql>select * from t1;
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com