master安装和配置:
为mysql的安装提供前提环境和初始化安装mysql创建数据库目录
# mkdir /data/mysql –pv# mkdir /data/mysql/datafile# mkdir /data/mysql/logfile创建mysq用户 # useradd -r mysql 修改权限 # chown -R mysql.mysql /data/mysql/ 使用mysql-5.5通用二进制包安装 解压mysql软件包 # tar xf mysql-5.5.28-linux2.6-i686.tar.gz-C /usr/local/ 创建连接,为了方便查看mysql的版本等信息 # cd /usr/local/ #ln –sv mysql-5.5.28-linux2.6-i686.tar.gzmysql 修改属主属组 # cd mysql # chown -R root.mysql ./* 初始化数据库 # scripts/mysql_install_db –user=mysql --datadir=/mydata/data/ 提供配置文件 # cp support-files/my-large.cnf /etc/my.cnf 提供服务脚本 # cp support-files/mysql.server /etc/rc.d/init.d/mysqld 添加至服务列表 # chkconfig --add mysqld # chkconfig --list mysqld # chkconfig mysqld on 编辑配置文件,提供数据目录 # vim /etc/my.cnf # The MySQL server 修改mysqld服务器端的内容 log-bin=mysql-bin 主服务器二进制日志文件前缀名 log-bin-index=mysql-bin.index 索引文件 innodb_file_per_table= 1 开启innodb的一表一个文件的设置 server-id = 1 必须是唯一的 datadir =/mydata/data 数据目录路径 启动mysql服务 # servicemysqld start 为了便于下面的测试,设置环境变量 # vim/etc/profile.d/mysql.sh export PATH=$PATH:/usr/local/mysql/bin 执行环境变量脚本,使其立即生效 # . /etc/profile.d/mysql.sh mysql的安装配置完成,下面增加一个用于同步数据的账户并设置相关的权限吧!建立用户账户
mysql> grant select on *.* to 'repl'@'10.77.4.%' identified by 'LSzhYccfwVtReKY9';mysql>grant REPLICATION CLIENT on *.* to 'repl'@'10.77.4.%';
mysql>grant REPLICATION SLAVE on *.* to 'repl'@'10.77.4.%';刷新数据使其生效 mysql> flush privileges;至此我们mysql的Master设置完成,下面进行slave端的设置吧!
Slave安装配置:
安装环境配置:
创建mysql数据库目录
# mkdir /mydata/data –pv 创建mysql用户 # useradd -r mysql 修改数据目录权限 # chown -R mysql.mysql /mydata/data/ 使用mysql-5.5通用二进制包安装mysql 解压mysql软件包 # tar xf mysql-5.5.28-linux2.6-i686.tar.gz-C /usr/local/ 创建连接,便于查看mysql的版本等信息 # cd /usr/local/ # ln –sv mysql-5.5.28-linux2.6-i686.tar.gzmysql 修改mysql属主属组 # cd mysql # chown -R root.mysql ./* 初始化mysql数据库 # scripts/mysql_install_db –user=mysql--datadir=/mydata/data/ 提供mysql配置文件 # cp support-files/my-large.cnf /etc/my.cnf 提供服务脚本 # cp support-files/mysql.server /etc/init.d/mysqld 添加至服务列表 # chkconfig --add mysqld 编辑配置文件 # vim /etc/my.cnf # The MySQL server #log-bin=mysql-bin 禁用二进制日志,从服务器不需要二进制日志文件 datadir = /mydata/data mysql的数据目录 relay-log = relay-log 设置中继日志 relay-log-index = relay-log.index 中继日志索引 innodb_file_per_table = 1 server-id = 2 id不要和主服务器的一样 设置环境变量 # vim/etc/profile.d/mysql.sh export PATH=$PATH:/usr/local/mysql/bin 执行此脚本(导出环境变量) # . /etc/profile.d/mysql.sh 启动服务 # service mysqld start 到这slave服务的mysql安装和配置完成,下面启动slave复制吧,开启之前先查看下从服务上的二进制文件吧mysql> show master status; #在Master上执行查看二进制文件
在从服务器上开启复制功能
change master to master_host='10.77.4.8',master_user='repl',master_password='LSzhYccfwVtReKY9',master_log_file='mysql-bin.000002',master_log_pos=876;开启复制功能
mysql>start slave;
杂项:
-
根据报警找出出错的记录:
/usr/local/mysql/bin/mysqlbinlog -v --stop-position=156190985 /data/mysql/datafile/mysql-bin.000006 > /data/f.log
cat /data/f.log | awk '/end_log_pos 156190985/ {print NR}'
cat /data/f.log | awk 'NR==3989111,NR==3989131'
-
限定只同步哪张表 .% 表示忽略数据不一致的错误
replicate_wild_do_table=pgenius.%
replicate_wild_do_table=pgznty.%
-
跳过报错
1.跳过指定数量的事务:
mysql>stop slave ;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,1032 #跳过指定error no类型的错误#slave-skip-errors=all #跳过所有错误