MySQL crashed on me sometime late Sunday or early Monday. Somehow the server managed to serve up 5-6 pages per day in a catatonic state on Monday and Tuesday. So I spent my lunch break digging into the problem. Read more
I got my new 64-bit web server up and running today. Now the main task that remains is to get my data moved over to it. I talked myself into going with an Apache setup, since one program I want to run (Webtrees) is designed for Apache and its search engine optimization seems to work better under Apache than Nginx. It’s fast anyway; displaying the 17-person family of Andrew Davis McQueen of Leesville, Mo., briefly consumes 2% of the available CPU time in Webtrees with the APC PHP cache installed and enabled. And that should get better, seeing as newer, faster, better versions of both Apache and PHP were released in the last month.
As I built my new 64-bit web server, I messed up MySQL a couple of times. When you break MySQL beyond repair, here’s how to start over with a fresh MySQL install and a fresh /var/lib/mysql without doing a Windows-like reformat and reinstall of the entire operating system:
I took a strange phone call from the field today, asking for advice about creating policies and procedures on data recovery.
There’s no easy answer.
My new fire-breathing dragon of a server is sitting idle at the moment. I would have liked to have had it up and running today, but now I’m starting to realize why it took me so long to migrate off my Pentium II-450. Setting up Linux web servers is a lot more complicated than it was in 2001.
They can do a lot more than they could in 2001 too, but when I first built that server, the process literally went in about three steps: Install Debian, apt-get install apache mysql php, then download blogging software, create a MySQL database and account for it, edit a config file, then start blogging. You could get it done in an hour, and a lot of that time was waiting for stuff to load off a CD-ROM or download over a 256K DSL connection.
HP announced this week that it’s not going to sell Web OS–the operating system it bought the remnants of Palm to get–and plans to open-source the platform, as well as re-introduce tablets based on it sometime in the distant future.
The move isn’t guaranteed to work, but I think it’s a shrewd move.
I don’t know what happened, but my Ubuntu Linux server crashed hard the other night. And when I brought it back, the rest of the network couldn’t see it. I could ping my gateway (router), and the server was pulling an IP address over DHCP, and the rest of the world had connectivity to it, but I couldn’t ping anything else on the network. And my Windows machines couldn’t connect to it.
Om Malik shared yesterday what he’s learned in 10 years of blogging.
1. Blogging is communal.
2. Be authentic.
3. When wrong, admit it and listen to those who were right.
4. Be regular.
5. Treat others as you expect yourself to be treated.
6. Respect your readers’ time.
7. Wait 15 minutes before publishing.
8. Write everything as if your mom is reading.
9. It’s not opinion–it’s viewing the world a certain way and sharing that view.
10. A little snark goes a long way.
I like Turnkey Linux, which is a collection of pre-built server appliances based on Ubuntu. When you need a server fifteen minutes from now, it’s about the only way you can make it happen.
But as far as I can tell, it doesn’t mount USB drives automatically. That’s fine; these servers are designed to have the minimum necessary for their stated purpose in life and nothing more. Here’s how I mount a USB drive to use for making backups.
When upgrading this site, I replaced the underlying hardware as well. The old server was just a dead end in too many regards to be worth upgrading in place, and besides, being able to run new and old side by side for a time is helpful.
This type of maneuver is routine work for a professional sysadmin. But it’s been at least two years since I’ve done a similar maneuver at all, and at least five years since I did it with Linux.
When I built the new machine, I gave it a unique IP address. Turnkey Linux makes getting an operational LAMP stack trivial, and depending on what you want to run on that stack, you may even be able to get that installed for you too.
Unfortunately for me, the Geeklog migration tool doesn’t seem to work with WordPress 3.0.1. So I had to get WordPress running on my old hardware in order to migrate. I chose WordPress 2.0.11 because the 2.0 branch appeared to be the current branch when Justdave wrote his migration tool, and 2.0.11 ran without complaint on the dated versions of PHP and MySQL that were on my old server.
After importing the content, I used mysqldump to export my databases. Specifically:
mysqldump --opt -u [mysql username] -p [database name, probably wordpress] > wordpress.sql
I should have gzipped the file, but I didn’t.
I then connected to the old server via FTP and transferred the file. Use your favorite file transfer method; I happened to have FTP set up for my internal network.
Uncompress the file if you compressed it:
Then restore the file:
mysql -u [mysql username] -p [database name] < wordpress.sql
Or, if the database already exists, like in my case:
mysqlimport -u [uname] -p [database name] wordpress.sql
Then I connected to the webserver via my web browser. WordPress 3.0.1 saw the WordPress 2.0.11 database and informed me that it needed to be upgraded. So I let it do its thing, and a few minutes later, I had a functioning WordPress site with 10 years’ worth of legacy entries.
I messed around with it for a while. Finally, I decided to go live. And at this point, I should have physically moved the new server into its permanent home. I didn’t do that, so now when I decide to move the server, I’m going to have some downtime.
To flip the IP addresses, you need to know where your Linux box stores its IP address. Debian and Ubuntu both store it in /etc/network/interfaces. As far as I can tell, Red Hat and derivatives like CentOS store it in /etc/sysconfig/network-scripts/ifcfg-eth0, but I haven’t used Red Hat or a derivative in a long time, perhaps 2003.
If worse comes to worse, try something like this to determine where it’s stored:
grep -r [ip address] /etc/
I edited the appropriate file on both boxes, changing the IP address while leaving all of the other parameters unchanged.
I then issued the command ifdown eth0 on both machines.
On my new production server, I then issued the command ifup eth0. Depending on the Linux distribution, it might also be necessary to re-issue a default route command. I didn’t have to do that.
Depending on how much Linux/Unix cred you have at stake, you could just do it the Windows way and reboot the box. Or both of them.
Once I was satisfied everything was working, I powered down the old server and celebrated.
Yesterday, during my weekly garage sale adventures, I bought some computer equipment. Among the haul: a Biostar Socket A motherboard with an AMD Sempron 2200+ CPU and 512MB of RAM. It’s not state of the art, but can hold its own against some of the stuff still on the market, and it’s a big upgrade over the 450 MHz Pentium II that’s been powering this web site since July 2002.I swapped the board into my 266 MHz Pentium II. That first-generation P2 was a useful machine for me for a while, but mostly it’s just been taking up space. I had to do some slight modifications to get the newer board to bolt in, but it fit without too much trouble and now some of the 11-year-old hardware is useful again. It reminded me a lot of my college days, when I used to drop 486 and Pentium boards into IBM PC/ATs.
Debian installed on the upgraded system with no complaints, but I quickly found my Linux command line skills are rusty. And there have been enough changes in the last six years that I can’t just copy over /var/www and /var/lib/mysql and expect it to run like it used to.
So I’ll apply my 15 minutes per day principle. My chances of finding a block of 2-3 hours to get it all done are near zero, but I should be able to find a few minutes each day. So one day I can move the databases, then I can move the HTML and PHP another day, convert to WordPress still another day, and maybe, just maybe, have a vastly improved site in about a week if it all goes well.