mysql工作步骤简单介绍:
1、主服务器把数据更新记录到二进制日志文件中;
2、从服务器把主服务器的二进制日志复制到自己的中继日志中,这个由从服务器的I/O线程负责
3、从服务执行中继日志,把其更新应用到自己的数据库上,这个由从服务器的SQL线程负责
主从的基本配置:
1、主库修改配置,在其配置文件中添加以下内容
server-id=1
log-bin= binlog
binlog_format=mixed
2、从库修改配置,在其配置文件中添加以下内容
server-id=2
log-bin= binlog
binlog_format=mixed
replicate_wild_do_table=DBNAME.% #指定要同步的数据库名
replicate_wild_ignore_table=mysql.% #指定不要同步的数据库名
3、重启数据库后,授权slave用户给从库
在主库的数据库内执行:
grant relication slave on *.* to 'SLAVE_USER@'HOSTNAME' identified by 'PASSWORD';
4、锁表,以便执行将数据从从库上恢复
在主库上执行命令:
flush tables with read lock;
5、备份主库,然后将备份的数据库在从库上恢复
执行命令对主库备份并记录主库的master信息:
mysqldump -uBACKUP_USER -p DBNAME > DBNAME.sql
show master status;
执行命令对从库进行恢复数据:
mysql -uUSER -p -hHOSTNAME DBNAME < DBNAME.sql
解锁主库的锁表
unlock tables;
6、在从库进行执行复制操作
stop slave;
change master to master_host='IP' ,master_user='SLAVE_USER',master_password='PASSWORD',master_log_file='主库的bin-log文件',master_log_pos='主库的Position';
start slave;
7、在从库上查看是否成功
执行命令,当看到slave_io_running:yes时,表示网络正常;slave_sql_running:yes时,表示结构正常
show slave status\G;
主从同步问题解决:
1、分析报错日志,看到明确的报错后,可通过将主库和从库的相对应的表dump出来并做diff,即可看出不同处,然后将主库的dump.sql在从库上恢复出来,再起启动从库即可
2、如遇到不重要的语句更新,可在配置中添加配置,sql_slave_skip_counter = 1跳过该语句,再次启动从库即可;也可通过动态命令生效:set global sql_slave_skop_counter ="N"
切换主从的方法:
当主库无法短时间再次启动时,可将从库提升为主库
1、在从库上执行
stop slave;
reset master;
2、删除从库(现主库)的master.info和relay-log.info文件




