数据库安装,主从同步步骤 安装步骤
password密码123456是用来测试的,根据真实环境可以随时修改
groupadd mysql useradd -r -g mysql mysql tar zxvf mysql-5.1.57-linux-x86_64-glibc23.tar.gz mv mysql-5.1.57-linux-x86_64-glibc23 /usr/local/mysql cd /usr/local/mysql chown -R mysql:mysql /usr/local/mysql cp support-files/my-medium.cnf /etc/my.cnf ./scripts/mysql_install_db --user=mysql /usr/local/mysql/bin/mysqld_safe --user=mysql & ./bin/mysqladmin -u root password 123456 echo "/usr/local/mysql/bin/mysqld_safe --user=mysql &" >>/etc/rc.local echo "export PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile source /etc/profile cp support-files/mysql.server /etc/init.d/mysqld service mysqld restart chkconfig --level 345 mysqld on
两台服务器:
192.168.1.2:主
192.168.1.3:从
主服务器: vi /etc/my.cnf server-id=10
mysqladmin -p123456 shutdown mysqld_safe --user=mysql &
mysql -uroot -p123456 进入数据库,创建同步使用的账号密码 创建用户 >grant replication slave on *.* to identified by 'backup'; 查看表状态 查询主数据库状态,并记下FILE及Position的值,这个在后面配置从服务器的时候要用到。 mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000006 | 259 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
从服务器 修改my.cnf,注意主从ID不能一样,否则会报错 Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).
vi /etc/my.cnf server-id=11 重启服务 mysqladmin -p123456 shutdown mysqld_safe --user=mysql &
登录mysql,执行如下语句 mysql -uroot –p123456 mysql> change master to master_host='192.168.1.2',master_user='backup',master_password='backup',master_log_file='mysql-bin.000006',master_log_pos=259; 注: master_log_file='mysql-bin.000006', master_log_pos=259; 和上面用show master status; 查看到的数据一致就可以
启动slave同步。
mysql> start slave;
检查主从同步,如果看到Slave_IO_Running和Slave_SQL_Running均为Yes,则主从复制连接正常。
mysql> show slave status\G; 验证: Slave_IO_Running: Yes Slave_SQL_Running: Yes
验证配置是否正常,mysql主从能否正常复制。 在主数据库上创建一个表格测试是否同步 mysql> create database mysqltest; mysql> use mysqltest; mysql> create table user(id int(5),name char(10)); mysql> insert into user values (00001,'zhangsan'); ________________ 为了更好的进行测试,不使用mysql,test类的表格名称:新建表格 mysql> create database member; mysql> use member; mysql> create table user(id int(5),name char(10)); mysql> insert into user values (00002,'good');
在从数据库中验证一下,是否正常复制到数据。 [root@localhost ~]# mysql -uroot –p123456 mysql> show databases; mysql> select * from mysqltest.user; mysql> select * from member.user;
附:同步关闭语句: mysql> slave stop;
———————————————————————————— 若主数据库表某表tools不想进行同步 vi /etc/my.cnf 添加:binlog-ignore-db =tools 位置:binlog_format=mixed下面。 重启主服务器服务即可 检查主库: >show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000008 | 193 | | tools | +------------------+----------+--------------+------------------+ 会发现binlog_ignore里面多了tools。然后进入从库会发现没有这个表
如何监控主从是否同步正常(脚本直接采用公司搭档写的shell命令:)
监控软件:nagios
位置:/usr/local/nagios/libexec
在从库上建立脚本命名为check_mysql_slave:
#!/bin/sh declare -a slave_is slave_is=($(/usr/local/mysql/bin/mysql -uroot -pYOURPASSWORD -e "show slave status\G"|grep Running |awk '{print $2}')) if [ "${slave_is[0]}" = "Yes" -a "${slave_is[1]}" = "Yes" ] then echo "OK -slave is running" exit 0 else echo "Critical -slave is error" exit 2 fi
YOURPASSWORD是你现用数据库所使用的密码