centos6.5 (base redhat):
server 1: 10.144.255.45 主
server 2: 10.163.189.82 从
主服务器配置:my.cnf
[mysqld]
datadir = /mnt/mysql/data
port = 3306
socket = /mnt/mysql/mysql.sock
collation_server = utf8mb4_unicode_ci
character_set_server = utf8mb4
lower_case_table_names=1
skip-external-locking
key_buffer_size = 512M
max_allowed_packet = 4M
table_open_cache = 512
sort_buffer_size = 8M
read_buffer_size = 4M
read_rnd_buffer_size = 16M
myisam_sort_buffer_size = 64M
thread_cache_size = 128
max_connections=1024
query_cache_size = 64M
# Try number of CPU's*2 for thread_concurrency
lower_case_table_names = 1
#default_character_set = utf8
init_connect='SET NAMES utf8'
# repclication db config 服务器主从备份设置
#指定数据库使用binlog二进制日志,多个,隔开
binlog-do-db=feiha
# 忽略使用binlog的数据库
binlog-ignore-db=mysql,information_schema
# 需要同步的数据库,多个写多行
replicate-do-db=数据库
# 不需要同步的数据库,多个写多行
replicate-ignore-db=information_schema
# 各不相同
server-id = 1
# 启用log-bin
log-bin=mysql-bin
# 当一个主的出现故障,另一个接管
log_slave_updates
# 每条自动更新,安全性高,默认0
sync-binlog=1
配置完成,重启: service mysqld restart
进入mysql 控制台,查看主服务器bin-log文件(mysql-bin.00000x)和当前位置position
如果从数据库与主数据库数据不一致,需要先将主数据库数据备份至从数据,然后在查看master信息,记住bin-log 文件名和position位置,配置从数据库时需要用到。
数据传输可以使用mysqldump也可以使用navicat.
为从数据库创建访问用户:
create user replication idenified by‘password’;
赋权限,可以指定从服务器ip,也可以使用%表示任何ip
grant replication slave on *.* to replication@’ip’ identified by ‘password’;
flush privileges;
从服务器配置:my.cnf
只需将配置文件中的service-id默认的1改成一个与其他mysql的service-id不同的数值即可。
重启服务器,进入mysql:执行:
![]()
查看状态;
测试,在主服务器操作数据,从数据库将会改变。
注意:有时候Slave_IO_RUNNING:NO,有可能是启用startslave前,master_pos发生了变化和输入的不一样,所以要随时查看master最新的position和File,使用changemaster命令重新设置和启用。
数据不同步情况下,需要先锁定主库,flush tables with read lock;可以防止master_pos发生变化
mysql主从复制,经常会遇到错误而导致slave端复制中断,这个时候一般就需要人工干预,跳过错误才能继续
跳过错误有两种方式:
1.跳过指定数量的事务:
mysql>slave stop;
mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 #跳过一个事务
mysql>slave start
该种形式,会导致数据不一致,当发生错误时,后面的数据将无法同步上。数据差异较大应该将主库数据导入至从库,重新设置主从复制。
2.修改mysql的配置文件,通过slave_skip_errors参数来跳所有错误或指定类型的错误
vi /etc/my.cnf
[mysqld]
#slave-skip-errors=1062,1053,1146 #跳过指定error no类型的错误
#slave-skip-errors=all #跳过所有错误
Mysql主从复制
最新推荐文章于 2024-01-27 14:42:00 发布