首先我们需要从MySQL开发者网站下载Yum仓库文件
从上面的连接地址下载:Red Hat Enterprise Linux 6 / Oracle Linux 6 (Architecture Independent), RPM Package ,点击下载
下载完成后将Yum库导入到你的本地:
sudo yum localinstall mysql-community-release-el6-5.noarch.rpm -y
mysql-community-release-el6-5.noarch.rpm这个Yum库包含了MySQL Server,MySQL工作台管理工具以及ODBC驱动,现在可以通过下面的命令简单地安装MySQLServer:
sudo yum install mysql-community-server -y
启动MYSQL服务:
service mysqld start
chkconfig --list
chkconfig mysqld on --设置服务自启动
chkconfig --list
如果需要修改MySQL数据存放位置,需要先停止mysql服务
mv /var/lib/mysql /data/mysql 移动默认数据库的存放位置
ln -s /data/mysql /var/lib/mysql 创建软连接
ll /var/lib/mysql 查看软连接
然后修改/etc/my.cnf文件,在启动mysql服务。如果启动服务器,日志里报错显示:“/usr/sbin/mysqld: Can't change dir to '/data/mysql/' (Errcode: 13)”
那么应该是和selinux有关,
解决办法:
vi /etc/selinux/config
修改selinux=disabled或者permissive
setenforce 0 --临时关闭selinux模式或者重起linux服务器,然后就OK了。
设置防火墙:
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save
service iptables restart
cat/etc/sysconfig/iptables
如果启动出:[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist错误
需要重新初始化user表
mysql_install_db --user=mysql
service mysqld start --启动mysql
设置MYSQL主从
0、my.cnf
server_id=n --设置唯一标识
1、登陆主库并创建一个用户‘repl’,并允许其他Slave服务器可以通过远程访问Master,通过该用户读取二进制日志,实现数据同步。
mysql -P13306 -u root -p //登陆MySQL
create user repl; //创建新用户
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.7.%' IDENTIFIED BY 'mysql'; //repl用户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限,密码为mysql。说明一下192.168.7.%,这个配置是指明repl用户所在服务器,这里%是通配符,表示192.168.7.0-192.168.7.255的Server都可以以repl用户登陆主服务器。当然你也可以指定固定Ip。
use mysql;select host,user from mysql.user;
2、查看主库日志:
SHOW MASTER STATUS;
3、登录从库
mysql -P13306 -u root --登录从库
change master to master_host='192.168.7.245', //Master 服务器Ip
master_port=13306,
master_user='repl',
master_password='mysql',
master_log_file='mysqlmaster-bin.000006', //Master服务器产生的日志
master_log_pos=415;
4、启动从库
start slave; --启动从库
stop slave; --停止从库
5、查看从库日志
SHOW SLAVE STATUS\G;
注意查看:
Slave_IO_Running: YesSlave_SQL_Running: Yes以上这两个参数的值为Yes,即说明配置成功!
数据搬家
1.执行还原之前阻止新数据写入,例如:停止洛杉矶的atlas服务(省略)
2,洛杉矶老主库上,执行备份脚本(省略)
3,纽约新主库执行:还原洛杉矶老库数据库(省略)
4,搬家脚本
#mysql -uroot -p端口
mysql>system gdb -p $(pidof mysqld) -ex "set opt_log_slave_updates=1" -batch #让纽约的主库开始同步洛杉矶主库的数据计入relaylog,便于纽约其他的从库能够复制新主库的binlog
mysql>show variables like 'log_slave_updates';
5.在纽约新库上创建与老库相同的的复制用户,例如:uid:slave,pwd:123456
6.到纽约备份文件里面看日志点,备份文件是从洛杉矶copy到纽约机器的
#head -30 mysql_****_website.sql 查看后备份的数据库文件
7.等待执行完备份后,在新主库上执行change master to 洛杉矶老主库
mysql>change master to master_host='洛杉矶老主库的IP地址', master_user='slave',master_password='123456',master_port=端口号,master_log_file='mysqlmaster-bin.000996',master_log_pos=48047;
mysql>start slave;
mysql>show slave status\G
查看数据是否到新的数据库了
mysql>show processlist;
mysql>set global general_log=on; #开启全局日志记录
#tail-f /data/mysqldata/数据库-master.log
mysql>set global general_log=off; #关闭全局日志记录
8.在新主库上停掉复制
mysql>stop slave; #断掉slave线程
mysql>reset slave all; # 清空主从配置信息
9.新主库执行:system gdb -p $(pidof mysqld) -ex "set opt_log_slave_updates=0" -batch 关闭该参数
mysql>system gdb -p $(pidof mysqld) -ex "set opt_log_slave_updates=0" -batch
mysql>show variables like 'log_slave_updates';
数据搬家完毕