You've said what your code looks like, and said that there is a problem, but have not stated specifically what the problem is, or how you tested this code. That makes guessing the possible cause rather difficult...
Nevertheless, there is indeed a very serious problem here -- one that can destroy your search rankings quite quickly and thoroughly. So fixing that as well as proposing a possible fix for your redirect, replace everything you posted above with:
ErrorDocument 404 /404-error.html
#
RedirectMatch 301 ^/old\.html$ http://example.com/nyc_dog_trainer/
Note that the path to the 404 error document *must* be a local filepath and not a URL. If you use a URL, then all requests for non-existent objects on your site will be served a 302-Found redirect response. This can have very bad effects on search engines' willingness to spider your site -- They know that they will get a page for *any* URL that they request from your domain... Not good. See Apache core ErrorDocument directive documentation for details.
I opted to use RedirectMatch instead of the Redirect directive, because it can be used to specify one and only one specific URL-path to be redirected. This is unlike the Redirect directive, which uses prefix-matching and therefore redirects any requested URL-path that *starts with the path you specify. See Apache mod_alias documentation for details.
Jim